PDA

View Full Version : سوال: مشکل با دیتا گرید های داخل tabControl



mahtab.kamali
جمعه 16 فروردین 1392, 00:57 صبح
سلام به همه

یک tabControl با دو تا tabPage روی فرم قرار داده ایم و در هر tabPage یک دیتا گرید هست

حالا اگه بخواهیم این دیتا گرید ها در رویداد لود فرم همزمان ولی هرکدام از جدول مجزا از یک بانک بایند گردند

پیشنهاد شما چیه

البته از دیتابیس sql وبااستفاده از Ado

veniz2008
جمعه 16 فروردین 1392, 01:13 صبح
سلام.
قطعا نیازی به بارگذاری همزمان هر 2 گرید در formload نیست چراکه در لحظه اولیه تنها tabpage1 فعال و نمایش داده میشه پس شما هم در فرم لود گرید مربوط به tabpage1 رو بارگذاری کنید و در رویداد enter مربوط به tabpage2 ، گرید دوم رو پر کنید. اینطوری فشاری به برنامه نمیاد و کارها تقسیم میشه.
موفق باشید.

mahtab.kamali
جمعه 16 فروردین 1392, 01:18 صبح
سلام.
قطعا نیازی به بارگذاری همزمان هر 2 گرید در formload نیست چراکه در لحظه اولیه تنها tabpage1 فعال و نمایش داده میشه پس شما هم در فرم لود گرید مربوط به tabpage1 رو بارگذاری کنید و در رویداد enter مربوط به tabpage2 ، گرید دوم رو پر کنید. اینطوری فشاری به برنامه نمیاد و کارها تقسیم میشه.
موفق باشید.
ممنون از پاسختون

همین کارو به روشهای مختلف انجام دادم اما دیتا گرید tabpage2 خالی می مونه

veniz2008
جمعه 16 فروردین 1392, 01:25 صبح
کد مربوط به پر کردن گرید دوم رو بصورت کامل بذارید.

mahtab.kamali
جمعه 16 فروردین 1392, 01:39 صبح
کد مربوط به پر کردن گرید دوم رو بصورت کامل بذارید.

private void tabPage2_Enter(object sender, EventArgs e)
{

try
{
con = new SqlConnection(connect);
con.Open();
string query = "select State_id,city_id,city_name from dorna";
command = new SqlCommand();
command.CommandText = query;
command.Connection = con;
adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
objDataTable = new DataTable();
adapter.Fill(objDataTable);
con.Close();
dataGridView2.DataSource = objDataTable;

veniz2008
جمعه 16 فروردین 1392, 01:48 صبح
من کدهای شما رو ساده تر کردم. اینطوری بنویسید:

SqlConnection con = new SqlConnection("server = .\\md2008;database = Test1;Integrated Security = True");
SqlDataAdapter da = new SqlDataAdapter("select State_id,city_id,city_name from dorna", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView2.DataSource = dt;

mahtab.kamali
جمعه 16 فروردین 1392, 02:07 صبح
مرسی آقای veniz2008 حل شد اما به نظرتون کدهای قبلی چرا توی گرید 1 عمل می کرد اما توی گرید 2 نه ؟ :ناراحت:

veniz2008
جمعه 16 فروردین 1392, 02:15 صبح
فکر کنم command رو Execute نکرده بودید! هرچند بدون execute هم باید نتیجه داخل آداپتور ریخته بشه که جای تعجب داره و لی تست کنید شاید مشکل از اون باشه!!. یعنی بعد از خط زیر

adapter.SelectCommand = command
به نظر میرسه نیاز باشه که کامند رو اجرا کنید تا نتیجه وارد DataAdaptor بشه.

command.ExecuteReader();