PDA

View Full Version : سوال: کمک فوری ، خواهشاً کمک کنید. چگونه از یک فرم دیگر اطلاعات داخل دیتا گرید را ویرایش کنم ؟



ali2006sr
دوشنبه 13 مهر 1388, 11:25 صبح
سلام ، دوستان من یک مشکلی دارم ، اینکه من یه فرم دارم به نام فرم 1 و داخلش یه دیتا گرید هست و با دابل کلیک اطلاعات سطر جاری اونو به فرم 2 جهت ویرایش انتقال می دم و می خوام بعد از ویرایش در فرم 2 وقتی دکمه ثبت رو زدم تغییرات در دیتا گرید اعمال بشه ولی نمیشه !!!! لطفاً کمک کنید . این هم کدشه ولی میگه که دیتاگرید خالیه !

; int radif
; radif=cform1.cradif
;()form1 frm1 = new form1
(if (frm1.grd1.Rows.Count != 0
}
; frm1.grd1.Rows[radif].Cells[5].Value = a.Text
; frm1.grd1.Rows[radif].Cells[6].Value = b.Text
; frm1.grd1.Rows[radif].Cells[7].Value = s.Text
{
;()this.Close

اَرژنگ
دوشنبه 13 مهر 1388, 12:15 عصر
سلام ، دوستان من یک مشکلی دارم ، اینکه من یه فرم دارم به نام فرم 1 و داخلش یه دیتا گرید هست و با دابل کلیک اطلاعات سطر جاری اونو به فرم 2 جهت ویرایش انتقال می دم و می خوام بعد از ویرایش در فرم 2 وقتی دکمه ثبت رو زدم تغییرات در دیتا گرید اعمال بشه ولی نمیشه !!!! لطفاً کمک کنید . این هم کدشه ولی میگه که دیتاگرید خالیه !


; int radif
; radif=cform1.cradif
;()form1 frm1 = new form1
(if (frm1.grd1.Rows.Count != 0
}
; frm1.grd1.Rows[radif].Cells[5].Value = a.Text
; frm1.grd1.Rows[radif].Cells[6].Value = b.Text
; frm1.grd1.Rows[radif].Cells[7].Value = s.Text
{
;()this.Close




;()form1 frm1 = new form1
شما دارید دوباره یک فرم میسازی! البته که داتاگریدش خالیه.
روش برگرداندن اینطوری نیست.
در فرم یک باید از مقدارهایه فرم کمکی استفاده کنید، نه اینکه در فرم کمکی به فرم اصلی دست بندازید و تغییرش بدید.

اگرچه روشی که استفاده شده اشکالات دیگری هم دارد ولی مثل اینکه شما در حالت کمبود زمانی قرار دارید و الان زمان یاد گرفتنش را ندارید.

ali2006sr
دوشنبه 13 مهر 1388, 13:39 عصر
;()form1 frm1 = new form1
شما دارید دوباره یک فرم میسازی! البته که داتاگریدش خالیه.
روش برگرداندن اینطوری نیست.
در فرم یک باید از مقدارهایه فرم کمکی استفاده کنید، نه اینکه در فرم کمکی به فرم اصلی دست بندازید و تغییرش بدید.

خب الان من باید چیکار کنم ؟ میشه بگید که من چه جوری می تونم بدون فشردن کلیدی در فرم 1 اطلاعات تغییر یافته در فرم 2 را در دیتا گرید آپدیت کنم ؟ ممنون میشم اگه بصورت عملی بگید

اَرژنگ
دوشنبه 13 مهر 1388, 13:48 عصر
خب الان من باید چیکار کنم ؟ میشه بگید که من چه جوری می تونم بدون فشردن کلیدی در فرم 1 اطلاعات تغییر یافته در فرم 2 را در دیتا گرید آپدیت کنم ؟ ممنون میشم اگه بصورت عملی بگید
چونکه در عجله هستید، پروژه تان بفرستید، درستش را برگردانم.

ali2006sr
دوشنبه 13 مهر 1388, 14:28 عصر
چونکه در عجله هستید، پروژه تان بفرستید، درستش را برگردانم.

ممنونم از لطف شما

bachebahal_1363
دوشنبه 13 مهر 1388, 14:34 عصر
به نظر بنده خودتون درست کنید خیلی بهتره تا پروژتون رو پاس کاری کنید
لا اقل یه چیزی یاد می گیرین
برای کار شما کافیه در رویداد دابل کلیک گرید مورد نظر نمایش فرم دوم را به صورت showDialog باز کنید و چک کنید در صورت اینکه DialogResult برابر با OK بود گرید خودتون رو بار دیگه از دیتابیس پر کنید


if(frmEdit.showDialog()== DialogResult.OK)
{
da.fill(ds);
datagrid.datasource = ds;
}

ali2006sr
دوشنبه 13 مهر 1388, 14:42 عصر
به نظر بنده خودتون درست کنید خیلی بهتره تا پروژتون رو پاس کاری کنید
لا اقل یه چیزی یاد می گیرین
برای کار شما کافیه در رویداد دابل کلیک گرید مورد نظر نمایش فرم دوم را به صورت showDialog باز کنید و چک کنید در صورت اینکه DialogResult برابر با OK بود گرید خودتون رو بار دیگه از دیتابیس پر کنید


if(frmEdit.showDialog()== DialogResult.OK)
{
da.fill(ds);
datagrid.datasource = ds;
}

ولی من نمیخوام گریدم رو دوباره پر کنم ،میخوام اگه برای رکورد جاری من در فرم 2 تغییراتی ایجاد شد و کاربر تایید کرد اون تغییرات در رکورد جاری دیتاگرید من هم اعمال بشه نه اینکه دوباره از دیتابیس پر بشه
ممنون از توجهتون

ali2006sr
دوشنبه 13 مهر 1388, 15:06 عصر
تو رو خدا کمک کنید خیلی گیرم

اَرژنگ
دوشنبه 13 مهر 1388, 15:39 عصر
تو رو خدا کمک کنید خیلی گیرم
دوست عزیز،
منتظرم کامپیوتری که روش ویژوال دارم خلوت بشه بشینم سرش، از استرس بیا بیرون، قول میدم تا جوابت را ندم نخوابم.

ali2006sr
دوشنبه 13 مهر 1388, 15:46 عصر
دوست عزیز،
منتظرم کامپیوتری که روش ویژوال دارم خلوت بشه بشینم سرش، از استرس بیا بیرون، قول میدم تا جوابت را ندم نخوابم.

نهایت لطف شماست ، ممنون از محبتهای شما آقای آرژنگ

اَرژنگ
دوشنبه 13 مهر 1388, 17:18 عصر
ضمیمه شد.
منتها به خاطر اینکه در عجله بودید زیادی مثالتان را عوض نکردم، روش بهتر وجود دارد که یکمقداری تغییرات بیشتر لازم است.

یک سوال در ازایه دستمزد میخوام بدونم: روش اشتباه پابلیک کردن تکست باکسها ها را از کجا یاد گرفتید؟

ali2006sr
دوشنبه 13 مهر 1388, 17:48 عصر
ضمیمه شد.
منتها به خاطر اینکه در عجله بودید زیادی مثالتان را عوض نکردم، روش بهتر وجود دارد که یکمقداری تغییرات بیشتر لازم است.

یک سوال در ازایه دستمزد میخوام بدونم: روش اشتباه پابلیک کردن تکست باکسها ها را از کجا یاد گرفتید؟

ممنون از کمکتون

من تازه وارد برنامه نویسی C# شدم و تمام چیزهائی که بلدم از داخل کتابها یا همن سایت یاد گرفتم ، اگر جایی از کارم ایراد دارد یا اصولی نیست لطف کنید روش صحیح آن را متذکر شوید .
باز هم از لطف شما کمال تشکر را دارم

اَرژنگ
دوشنبه 13 مهر 1388, 18:07 عصر
ممنون از کمکتون

من تازه وارد برنامه نویسی C#‎ شدم و تمام چیزهائی که بلدم از داخل کتابها یا همن سایت یاد گرفتم ، اگر جایی از کارم ایراد دارد یا اصولی نیست لطف کنید روش صحیح آن را متذکر شوید .
باز هم از لطف شما کمال تشکر را دارم

مخلصیم،
دلیل اینکه پرسیدم این بود که بریم سراغ منبعات گمراه شدن، که نسل بعدی برنامه‌نویس از ما بهتر باشند.
اگر وقتکردید به این یکی روش یک نگاه بندازید، یکمقداری جامعتر است.http://www.barnamenevis.org/forum/showpost.php?p=821121&postcount=3

در ضمن، برایه اینکه فقط سوالتان را جواب بدم مثالتان را زیاد عوض نکردم ولی به جایه کار کردن با سلولهایه داتاگرید، بهتر این است که با ابجکتهایی که در زیرش هستند کار کرد.

farzadskf
سه شنبه 14 مهر 1388, 13:54 عصر
سلام دوست عزیز
شما باید از دستورات datarowview استفاده کنید.
دستورات کامل رو براتون می فرستم.برای اینکه یادم نره به میلم میل بزنید تا یادآوری بشه
farzadskf@yahoo.com

farzadskf
شنبه 18 مهر 1388, 12:35 عصر
خوشحالم که مشکلتون حل شد.
من از روش زیر استفاده کردم

در فرمی که datagrid هست این کد را بنویس
اینجا من تو فرم FormActor در فسمت رویداد دکمه ویرایش این کد رو گذاشتم
DataRowView drv = (DataRowView)mpDataSetBindingSource.Current;
FormAddNewActor frm = new FormAddNewActor(drv);
frm.ShowDialog();
توی فرم جدید که من از فرمی که قبلا برای اضافه کردن اطلاعات جدید استفاده کرده بودم استفاده می کنم
private string mode;
public FormAddNewActor()
{
InitializeComponent();
mode = "new";
}

public FormAddNewActor(DataRowView drv)
{
InitializeComponent();
mode = "edit";
buttonSabt.Text = "وبرایش مشخصات عامل";
textboxActorId.ReadOnly = true;
string actorTypeCode;
string active;
textboxActorId.Text = drv["ActorId"].ToString();
textboxName.Text = drv["name"].ToString();
textboxFamily.Text = drv["family"].ToString();
textboxFathername.Text = drv["fathername"].ToString();
textboxIdNo.Text = drv["idno"].ToString();
textboxBirthDay.Text = drv["birthdate"].ToString();
textboxBirthPlace.Text = drv["birthplace"].ToString();
textboxMelliCode.Text = drv["mellicode"].ToString();
textboxOstanCode.Text = drv["ostancode"].ToString();
textboxShahrCode.Text = drv["shahrcode"].ToString();
textboxAddress.Text = drv["address"].ToString();
textboxPostalCode.Text = drv["postalcode"].ToString();
active = drv["active"].ToString();

}
نکته مهم استفاده از خاصیت DataRowView بود.
امیدوارم تونسته باشم کمکت کنم

Arash_janusV3
شنبه 18 مهر 1388, 14:02 عصر
سلام
ببین نظرم چطوریه:متفکر:
کاربر وقتی وارد فرم دوم میشه یه کاری کن نتونه فرم اول را ببینه یا بیاره رو
بعد از اینکه کاربر اطلاعاتش رو وارد کرد شما بیا در داخل event فرم 2 گزینه close
Update دیتابیس رو انجام بده
بعد در همون close فرم 2 بیا dataset رو دوباره fill کن
شاید بشه
نشد بم بگو

kh1387
شنبه 18 مهر 1388, 18:34 عصر
مخلصیم،
دلیل اینکه پرسیدم این بود که بریم سراغ منبعات گمراه شدن، که نسل بعدی برنامه‌نویس از ما بهتر باشند.
اگر وقتکردید به این یکی روش یک نگاه بندازید، یکمقداری جامعتر است.http://www.barnamenevis.org/forum/showpost.php?p=821121&postcount=3

در ضمن، برایه اینکه فقط سوالتان را جواب بدم مثالتان را زیاد عوض نکردم ولی به جایه کار کردن با سلولهایه داتاگرید، بهتر این است که با ابجکتهایی که در زیرش هستند کار کرد.
خیلی قشنگ بود
دستت درد نکنه
میشه یه توضیح کلی هم بدی؟ مثلا در مورد کلاس Person و ...
ممنون میشم :چشمک:

اَرژنگ
یک شنبه 19 مهر 1388, 11:16 صبح
خیلی قشنگ بود
دستت درد نکنه
میشه یه توضیح کلی هم بدی؟ مثلا در مورد کلاس Person و ...
ممنون میشم :چشمک:

کلاس Person بازسازی یک بیزینس ابجکت است، برایه ساده بودن مثال از داتابیس و Business Entity FrameWork استفاده نکردم.

در حال ساخت یک مثال با استفاده از روشهایه حرفه‌ای و اصولی و فلسفه درست برنامه‌نویسی هستم، ولی داشتن خصوصیات سادگی، درستی، جامع بودن و حرفه‌ای بودن مثال آسان نیست.
همانطوی هم که خودتان میدانید، اگر کسی در تقلید اشتباه کند، همه پیرواش به بهشت میرند و خودش به جهنم، ولی در برنامه نویسی یک مثال اشتباه همه را هم به بیراهه میبره.

اَرژنگ
یک شنبه 19 مهر 1388, 11:19 صبح
سلام
ببین نظرم چطوریه:متفکر:
کاربر وقتی وارد فرم دوم میشه یه کاری کن نتونه فرم اول را ببینه یا بیاره رو
بعد از اینکه کاربر اطلاعاتش رو وارد کرد شما بیا در داخل event فرم 2 گزینه close
Update دیتابیس رو انجام بده
بعد در همون close فرم 2 بیا dataset رو دوباره fill کن
شاید بشه
نشد بم بگو

این روش اصولی نیست، من درآوردی با آدامس و چوب کبریت یک چیزی سمبل کردن است. رفتن به بیراهه یواش یواش شروع میشه و درست کردنش به لعنت خدا هم نمیارزه.