PDA

View Full Version : ذخیره ستون های یک datagridview



Amin69
پنج شنبه 13 تیر 1392, 11:41 صبح
سلام. من یه سری ستون توی یک datagridview اضافه کردم که محتویاتی از sql میگیره و در این ستون ها جا میگیره. اگه datagridview.datasource رو null کنم و دوباره محتویات sql رو توی dvg بریزم،ستون های اولیه ای که درست کرده بودم از بین میره. چطور میتونم این ستون ها و تنظیماتشو ذخیره کنم تا بعد از null کردن dvg دوباره اضافه بشن؟

Amin69
پنج شنبه 13 تیر 1392, 17:50 عصر
کسی نیست جواب ما رو بده؟! :گریه:

amir200h
پنج شنبه 13 تیر 1392, 18:03 عصر
تو ی حلقه for بزار. اینجوری

for (int i = 0; i < dataGridView11.RowCount; i++)
{
SqlConnection conupdate = new SqlConnection("server=(local);database=bank name;trusted_connection=yes");
SqlCommand comupdate = new SqlCommand(دستور آپدیت, conupdate);
conupdate.Open();
comupdate.ExecuteNonQuery();
conupdate.Close();
}

erfan_urchin
جمعه 14 تیر 1392, 03:40 صبح
خب شما مگه از DataTable استفاده نمیکنی؟؟؟
خب تا وقتی که DataTable شما new نشه که خالی نمیشه و همیشه اطلاعات رو تو خودش داره
شما اطلاعات رو بریز توی DataTable و هر موقع خواستی ازش استفاده کن
در واقع با این کار یه جورایی میشه گفت اطلاعاتو save کردین

Amin69
شنبه 15 تیر 1392, 15:50 عصر
خب شما مگه از DataTable استفاده نمیکنی؟؟؟
خب تا وقتی که DataTable شما new نشه که خالی نمیشه و همیشه اطلاعات رو تو خودش داره
شما اطلاعات رو بریز توی DataTable و هر موقع خواستی ازش استفاده کن
در واقع با این کار یه جورایی میشه گفت اطلاعاتو save کردین
من اینکار رو می کنم. اما بعد از اینکه dvg.datasource رو null می کنم و دوباره محتویات datatable رو توی dvg می ریزم، ستون هایی که درست کرده بودم از بین میره و یکسری ستون با تنظیم خودش قرار میده. برای من عنوان و سایز عرض ستون ها مهم هست که از بین میره و یه چیز دیگه مینویسه...

erfan_urchin
شنبه 15 تیر 1392, 20:32 عصر
خب شما مگه توی کد های button ای که گریدویو رو پر میکنه تنظیماتشو انجام ندادی؟؟؟
نگاه کن ، شما وقتی میتونی تنظیماتی مثل عرض ستون ها رو انجام بدی که گریدویو پر باشه
شما برای تعیین عرض ستون ها فکر میکنم به احتمال زیاد از این کد استفاده میکنی
dataGridView1.Columns[0].Width = 50;
خب این کد یعنی چی؟؟؟ یعنی این که برو تو گرید ویو اولین ستونشو پیدا کن و عرضشو 50 کن
پس این کد باید وقتی عمل کنه که گرید ویو پر شده باشه یعنی کد زیر اتفاق افتاده باشه
dataGridView1.DataSource = dt;
اگه شما قبل این که گریدویو رو پرکرده باشین بیاین بگین عرض ستون اولو 50 قرار بده کار نمیکنه چون ستونی تو گریدویو وجود نداره که بخواد بکنه 50
پس شما باید بعد هر بار پر کردن گریدویو تنظیماتتو انجام بدی
طبیعیه که شما dgv.datasource رو null کنید تنظیماتشم باهاش پاک میشه
به خاطر همین میگم بعد هر بار پرکردن گریدویو باید تنظیماتش هم اجرا بشه یعنی یه چیزی مثل کد زیر
private void button1_Click(object sender, EventArgs e)
{
SqlConnection sc = new SqlConnection("Data Source=.;Initial Catalog=db2;Integrated Security=True");
SqlDataAdapter sd = new SqlDataAdapter("select * from t1",sc);
DataTable dt = new DataTable();
sd.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.Columns[0].Width = 50;
dataGridView1.Columns[1].Width = 60;
dataGridView1.Columns[0].HeaderText = "نام";
dataGridView1.Columns[1].HeaderText = "نام خانوادگی";
}

khokhan
شنبه 15 تیر 1392, 20:48 عصر
من اینکار رو می کنم. اما بعد از اینکه dvg.datasource رو null می کنم و دوباره محتویات datatable رو توی dvg می ریزم، ستون هایی که درست کرده بودم از بین میره و یکسری ستون با تنظیم خودش قرار میده. برای من عنوان و سایز عرض ستون ها مهم هست که از بین میره و یه چیز دیگه مینویسه...
دستور ات مربوط به بایند دیتا گرید رو داخل یه متد قرار بدین بعد هرجا که تغییراتی در اطلاعات بوجود آمد ، حالا حذف و اضافه و آپدیت یا هرچی ، اون متد بایند گرید رو در آخر دستوراتتون فراخوانی کنین

Amin69
یک شنبه 16 تیر 1392, 01:28 صبح
خب شما مگه توی کد های button ای که گریدویو رو پر میکنه تنظیماتشو انجام ندادی؟؟؟
نگاه کن ، شما وقتی میتونی تنظیماتی مثل عرض ستون ها رو انجام بدی که گریدویو پر باشه
شما برای تعیین عرض ستون ها فکر میکنم به احتمال زیاد از این کد استفاده میکنی
dataGridView1.Columns[0].Width = 50;
خب این کد یعنی چی؟؟؟ یعنی این که برو تو گرید ویو اولین ستونشو پیدا کن و عرضشو 50 کن
پس این کد باید وقتی عمل کنه که گرید ویو پر شده باشه یعنی کد زیر اتفاق افتاده باشه
dataGridView1.DataSource = dt;
اگه شما قبل این که گریدویو رو پرکرده باشین بیاین بگین عرض ستون اولو 50 قرار بده کار نمیکنه چون ستونی تو گریدویو وجود نداره که بخواد بکنه 50
پس شما باید بعد هر بار پر کردن گریدویو تنظیماتتو انجام بدی
طبیعیه که شما dgv.datasource رو null کنید تنظیماتشم باهاش پاک میشه
به خاطر همین میگم بعد هر بار پرکردن گریدویو باید تنظیماتش هم اجرا بشه یعنی یه چیزی مثل کد زیر

}
ممنون ولی... این کد جواب نمیده...
من ستون ها رو در محیط Editor دیتاگریدویو اضافه کردم و خصوصیاتی چون پهنا، نام، هدر و ... رو اونجا بهش دادم...
106756

amir200h
یک شنبه 16 تیر 1392, 01:44 صبح
DataTable dt = new DataTable();
dt.Clear();
dataGridViewX2.DataSource = dt;

npscash
یک شنبه 16 تیر 1392, 05:09 صبح
دوست عزیز فقط کافیه قبل از اینکه dataGridView.DataSource رو ست کنی این کد را قرار بدهی dataGridView.AutoGenerateColumns = false;