PDA

View Full Version : مشكل در به روز رسانی فرم ها



Javad.Kashi
یک شنبه 17 مهر 1390, 13:22 عصر
سلام
من تو فرم دارم
در فرم اول یک گرید هست و یک عدد باتن برای به روز رسانی یک رکورد در گرید که با زدن آن فرم دوم باز می شود.
حالا وقتی فرم دوم بالا میاد و کاربر بعد از به روز رسانی دکمه Update را مي زند می خواهم که فرم قبلی و گرید داخل آن نیز به روز رسانی شود اما نمی توانم لطفا من را راهنمایی کنید.
از کد زیر هم استفاده کردم ولی کمکم نکرد.

Application.OpenForms["Base"].Update();

فقط یاد آوری کنم که من از Entity Framework استفاده می کنم
يا علي

Javad.Kashi
دوشنبه 18 مهر 1390, 11:31 صبح
سلام
لطفا به سوال من پاسخ دهید.

یا علی

Javad.Kashi
چهارشنبه 20 مهر 1390, 15:46 عصر
Up......................................

aliramazani
چهارشنبه 20 مهر 1390, 16:21 عصر
منم این مشکل را دارم

wolf_majid
چهارشنبه 20 مهر 1390, 16:44 عصر
Entity Framework نمی دونم چیه :لبخند:
اما شاید این راه حل جواب بده :
یک کلاس مثل کد زیر تعریف کنید
public class MoveObjectEventArgs : EventArgs
{
/// <summary>
///
/// </summary>
/// <param name="obj">موضوع ارسالی</param>
public MoveObjectEventArgs(object obj)
{
_object = obj;
}

/// <summary>
/// شی مورد انتقال
/// </summary>
private object _object;

/// <summary>
/// شی ذخیره شده را بر می گرداند
/// </summary>
public object GetObject
{
get { return _object; }
}
}
حالا توی فرم ارسال کننده یعنی فرمی که به روز رسانی دیتا توش انجام میشه دو خط زیر را اضافه کنید :

public delegate void _SendObject(object sender, MoveObjectEventArgs e);
public event _SendObject SendObject;

و اما بعد از به روز شدن دیتا هم دو خط زیر را اضافه کنید :

//رخداد ارسال اطلاعات کاربر اعمال شود
if (this.SendObject != null)
this.SendObject(this,new MoveObjectEventArgs(dt2));
dt2 در اینجا نام دیتا تیبل مورد نظر است که با توجه به نیاز اون رو تغییر بدید

و اما در فرم دریافت کننده اطلاعات :
شما فقط کافیه تمام کارهایی رو که قراره انجام بدید با یک تابع مثل زیر به رخداد مورد نظر ارسال کنید
_frmEmployees frmEmployee = new _frmEmployees();
frmEmployee.SendObject += new _frmEmployees._SendObject(GetEmployee);
frmEmployee.ShowDialog();

/// <summary>
/// موقع انتخاب کارمند تغییرات مورد نیاز را اعمال می کند
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GetEmployee(object sender, MoveObjectEventArgs e)
{
DataTable _dt_SelectedEmployee = (e.GetObject as DataTable);
_lblEmployeeCode.Text = _dt_SelectedEmployee.Rows[0][_classEmployees.TableFields.Code.ToString()].ToString();
_lblName.Text = _dt_SelectedEmployee.Rows[0][_classEmployees.TableFields.Name.ToString()].ToString();
(sender as _frmEmployees).Close();
}