PDA

View Full Version : آپدیت گرید در فرمی دیگر



نیما حتمی
سه شنبه 26 بهمن 1389, 17:57 عصر
با سلام خدمت دوستان

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

خیلی مهمه برام چون همه فرمام تو برنامم این تیپی کار می کنه

با تشکر

morteza.azad
سه شنبه 26 بهمن 1389, 20:35 عصر
من از این راه حل استفاده میکنم:
توی فرم اول هنگامی که با کلیک می خوای فرم دوم باز شه این کدو بنویس:

if (Form2.ShowDialog() == DialogResult.OK)
ShowAllData();

showAllData() : متدی هستش که تمام اطلاعات رو لود میکنه و تو دیتاگرد میریزه.

و در فرم 2 تو event form closed باید کد زیر رو بنویسی:

DialogResult = DialogResult.OK;

andaron
چهارشنبه 27 بهمن 1389, 01:00 صبح
سلام دوست عزیز
من هم همین مشکل رو داشتم و اومدم تو فرم اول =یه تابع پابلیک نوشتم که دیتا تیبل رو به گرید ویو وصل می کنه بعد تو فرم اول وقتی دکمه باز شدن فرم دوم زده میهش اون آپدیت میشه

نیما حتمی
شنبه 30 بهمن 1389, 10:23 صبح
دوستان جواب شما عزیزان نتونست مشکل بنده رو حل کنه.
نگاه کنید من 2 فرم دارم.در فرم1 یک گرید،در فرم دو تعدادی کنترل مانند تکس باکس و لیست باکس و....که با پر کردن این کنترلها گرید فرم 1 پر می شود.سوال اینجاست که وقتی از فرم 2 خارج می شوم گرید فرم 1 آپدیت نمی شود یعنی رکوردی که کاربر در فرم 2 با استفاده از اون کنترلها پر کرده در گرید ظاهر نمی شود.حتما باید یک بار از فرم 1 خارج شود دوباره وارد شود تا در گرید ظاهر شود.
چیکار کنم دوستان؟:ناراحت:

morteza271
شنبه 30 بهمن 1389, 10:51 صبح
زمانی که از فرم 1 فرم 2 رو باز می کنید این کد رو بنویسید:

form2 frm=new form2();
frm.ShowDialog();
// tabe i ke datagridview ro poor kone ro bezar.
this.TabelAdapter.Fill(this.DataSet);

در قسمتی که آداپتر را Fill کرده ام میتونی تابعی که گرید ویو رو پر میکنه رو بذاری.
اینطوری بعد از اینکه فرم 2 بسته میشه اطلاعات گریدویو آپدیت میشه.
موفق باشید.

نیما حتمی
شنبه 30 بهمن 1389, 11:13 صبح
دوست عزیز من از dataset استفاده نکردم کدمو می زارم پایین اگه میشه یه نگاه روش بنداز ممنونم

SqlDataAdapter adaptersave = new SqlDataAdapter("Insert Into Centers(CentralCode,CentralTitle,CentralTitleLatin ,CodeGroup,CodeGroupTitle,CodeKind,CentralKindTitl e,Address,Tel,Fax,Email,BoxPost,CodePost,CodeEcono mics,Remark,Posation,BranchCode,BranchName)values( '" + textBox13.Text + "'+'" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox13.Text + "','" + textBox14.Text + "','" + textBox15.Text + "','" + textBox16.Text + "','" + textBox10.Text + "','" + textBox4.Text + "','" + textBox9.Text + "','" + textBox7.Text + "','" + textBox8.Text + "','" + textBox6.Text + "','" + textBox5.Text + "','" + textBox11.Text + "','" + checkBox1.Checked + "','" + textBox17.Text + "','" + textBox18.Text + "')", connect);
DataTable T2 = new DataTable();
adaptersave.Fill(T2);
Frm.gridEX1.DataSource = T2;

frm فرم 2 من هست

morteza271
شنبه 30 بهمن 1389, 12:29 عصر
دوست عزیز من که گفتم تابعی که گریدویو رو پر میکنه رو در اونجا صدا بزنین!
اگه برنامتون رو میتونین بذارین تا اگه بتونم براتون درستش کنم.

نیما حتمی
شنبه 30 بهمن 1389, 16:47 عصر
این تابعی هست که گرید منو پرمیکنه و ازش زمانی که insert انجام میشه استفاده می کنم (برای آپدیت گرید فرم اول)ولی اینجا عمل نمی کنه جالب اینجاست همین تابع در لود فرمم درست عمل می کنه
public void view()
{

try
{
SqlDataAdapter adapter1 = new SqlDataAdapter("select * from Users", connect);
DataTable T1 = new DataTable();
adapter1.Fill(T1);
userfrm.gridEX1.DataSource = T1;
userfrm همان فرم اول من هست.
userfrm.gridEX1.RetrieveStructure();
}
catch (Exception xp)
{
FarsiMessageBox.FMessageBox.Show(" ", " ", FarsiMessageBox.FMessageBoxButtons.OK, FarsiMessageBox.FMessageBoxIcons.Error);
}

morteza271
شنبه 30 بهمن 1389, 17:32 عصر
userfrm.gridEX1.DataSource = T1;
ببین دوست عزیز لازم نیس اینطوری به گرید ویو درسترسی داشته باشید.
شما تابعتون رو به صورت زیر تغییر بدید تا درست کار کنه:

publicvoid view()
{

try
{
SqlDataAdapter adapter1 = newSqlDataAdapter("select * from Users", connect);
DataTable T1 = newDataTable();
adapter1.Fill(T1);
gridEX1.DataSource = T1;
gridEX1.RetrieveStructure();
}
catch (Exception xp)
{
FarsiMessageBox.FMessageBox.Show(" ", " ", FarsiMessageBox.FMessageBoxButtons.OK, FarsiMessageBox.FMessageBoxIcons.Error);
}
و بعد در زمانی که فرم2 رو ایجاد می کنید این دستور رو بنویسید:

Form2 frm = new Form2();
frm.ShowDialog();
View();
موفق باشید