PDA

View Full Version : سوال: مشکل با استاتیک کردن datagridview



barbimusic
یک شنبه 27 آبان 1397, 08:47 صبح
سلام دوستان وقتتون به خیر .
من هر دیتا گرید ویو ای رو که استاتیک میکنم که بتونم ازش توی فرم های دیگه هم استفاده کنم یه مشکل داره اینه که بعد از استاتیک کردنش اگه حتی کوچیکترین تغیری توی عنصر های توش یا خودش بدم دوباره از حالت استاتیک خارج میشه و دوباره باید برم یه عالمه خط کد کلمه ی this رو ازشون پاک کنم ..

واقعا نمیدونم مشکلش چیه . ممنون میشم راهنمایی کنید .

Mahmoud Zaad
یک شنبه 27 آبان 1397, 09:30 صبح
سلام
اصولاً نیازی به استاتیک کردن هیچ کنترلی ندارید. شما بفرمایید دقیقاً چه کاری میخواهید انجام بدید تا راهنمایی کنیم.

barbimusic
یک شنبه 27 آبان 1397, 09:43 صبح
سلام
اصولاً نیازی به استاتیک کردن هیچ کنترلی ندارید. شما بفرمایید دقیقاً چه کاری میخواهید انجام بدید تا راهنمایی کنیم.

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

Mahmoud Zaad
یک شنبه 27 آبان 1397, 10:02 صبح
شما باید در فرم اصلی یک متد داشته باشید که کارش دریافت اطلاعات از دیتابیس برای پر کردن گرید هست. این متد باید public تعریف بشه. حالا در فرم ورود اطلاعات، بعد از ورود این متد رو فراخوانی کنید. یک راه ساده برای فراخوانی متد در فرم دوم، به صورت زیر هست.
متد در فرم اصلی:
public void GetData()
{
//
}
در فرم ورود اطلاعات:
//insert or update
if (Application.OpenForms["frmMain"] != null)
(Application.OpenForms["frmMain"] as frmMain).GetData();

frmMain رو با نام فرم اصلی که گرید روش هست عوض کنید.

barbimusic
دوشنبه 28 آبان 1397, 17:51 عصر
شما باید در فرم اصلی یک متد داشته باشید که کارش دریافت اطلاعات از دیتابیس برای پر کردن گرید هست. این متد باید public تعریف بشه. حالا در فرم ورود اطلاعات، بعد از ورود این متد رو فراخوانی کنید. یک راه ساده برای فراخوانی متد در فرم دوم، به صورت زیر هست.
متد در فرم اصلی:
public void GetData()
{
//
}
در فرم ورود اطلاعات:
//insert or update
if (Application.OpenForms["frmMain"] != null)
(Application.OpenForms["frmMain"] as frmMain).GetData();

frmMain رو با نام فرم اصلی که گرید روش هست عوض کنید.

سلام . ممنونم از شما . من همین کد شما رو جایگزاری کردم . ولی ارور نال اکسپشن میده .



comboBoxParent.SelectedValue = (Application.OpenForms["List_Members_Edit_Parent"] as Members).Current_Parent();

این هم تابع Current_Parent که بهش رجوع میکنه :

public int Current_Parent()
{
using (var db = new SepehrImamRezaDB())
{
var found = db.Members.Find(dgMembers.CurrentRow.Cells["Id"].Value);
return found.ParentId;
}
}

Mahmoud Zaad
دوشنبه 28 آبان 1397, 18:45 عصر
اگه List_Members_Edit_Parent اسم فرم باشه باید بعد از as هم دوباره همون رو بنویسید:
comboBoxParent.SelectedValue = (Application.OpenForms["List_Members_Edit_Parent"] as List_Members_Edit_Parent).Current_Parent();

barbimusic
دوشنبه 28 آبان 1397, 18:48 عصر
اگه List_Members_Edit_Parent اسم فرم باشه باید بعد از as هم دوباره همون رو بنویسید:
comboBoxParent.SelectedValue = (Application.OpenForms["List_Members_Edit_Parent"] as List_Members_Edit_Parent).Current_Parent();


تابع Current_Parent من توی اون فرمی که گرید ویو هست و فرم زیر این List_Members_Edit_Parent هست تعریف شده . نمیتونم اینجوری استفاده کنم .

فرمی که توش گرید ویو هست و میخام آپدیت بشه اسمش Members هست

Mahmoud Zaad
دوشنبه 28 آبان 1397, 18:53 عصر
به هر حال باید این دو مقدار یکی باشند:
comboBoxParent.SelectedValue = (Application.OpenForms["Members"] as Members).Current_Parent();

barbimusic
دوشنبه 28 آبان 1397, 18:55 عصر
به هر حال باید این دو مقدار یکی باشند:
comboBoxParent.SelectedValue = (Application.OpenForms["Members"] as Members).Current_Parent();

ممنونم الان درست شد . من فکر میکردم باید اولی فرم جاری(بالایی) باشه و دومی اون فرم زیریه که میخاد آپدیت بشه . خیلی ممنونم از شما . :تشویق: