PDA

View Full Version : تغییر اطلاعات یک دیتاگرید بعد از Bind شدن



shervin_agh67
چهارشنبه 12 فروردین 1388, 16:30 عصر
سلام من یک دیتاگرید دارم و اون رو به یک bindingsource وصل کردم . حلا می خوام اطلاعات بعضی از سلولها رو با دستور زیر عوض کنم ولی اطلاعات عوض نمیشه :



dataGridView1.DataSource = BindingSource1;
dataGridView1.Rows[0].Cells[1].Value = "a";


کد زیر هم جواب نداد :



dataGridView1.CurrentRow.DataGridView[1,0].Value = "a";


هر چی هم دیتاگرید رو رفرش می کنم فایده نداره . ظاهرا بعد از bind شدن دیگه اطلاعاتش عوض نمیشه .

rnm123
چهارشنبه 12 فروردین 1388, 23:09 عصر
خوب دوست عزیز به جای بایند کردن میتونی یک دیتا ست و دیتا گرید ایجاد کنی و داده ها را بطور دستی وارد دیتاگریدویو کنی در این صورت میتونی آنها را تغییر هم بدی . البته یک چیزی به ذهنم رسید . آیا خاصیت ReadOnlyسلولهای دیتاگریدویو را در حالت false قرار داده ای؟

shervin_agh67
چهارشنبه 12 فروردین 1388, 23:19 عصر
آخه من اطلاعاتم رو با LINQ می گیرم و دیتاست به کارم نمیاد . اون خاصیت ReadOnly رو هم برابر false گذاشتم ولی تاثیر نداشت . راستش این روش دستی که گفتی فکر کن مجواب بده ولی من دستی بلد نیستم توی دیتاگرید بریزم چون خیلی دردسر داره. می تونی یک نمونه کد بگذاری ؟

shervin_agh67
چهارشنبه 12 فروردین 1388, 23:43 عصر
ببین من تقریبا می دونم مشکلش چیه اشکال از پرس و جویی هست که با LINQ انجام دادم و مقدار بازگشتیش Anonymous هست و غیر قابل ویرایشه (توی این تاپیک دربارش سوال کردم : http://www.barnamenevis.org/forum/showthread.php?t=153109) حالا می خوام بدونم با تمام این محدودیتها چجور میشه این کار رو کرد ؟ اگه بشه مقادیر رو توی یک دیتاست ریخت شاید بشه درستش کرد ، ولی نمیشه ریخت ...

rnm123
پنج شنبه 13 فروردین 1388, 00:17 صبح
من با linq تا حالا کارنکرده امو با آشنا نیستم اما دستی پرکردن دیتاگرید خیلی آسونه فقط سه چهار خط کد میخواد اگر خواستی بگو یک نمونه کد برات میگذارم

shervin_agh67
پنج شنبه 13 فروردین 1388, 00:26 صبح
ببین من زمانی که می خوام یک دیتاگرید رو دستی پر کنم باید یک datagridviewcell تعریف کنم که زیاد باهاش آشنایی ندارم و درست تعریفش نمی کنم . اگه یک نمونه کدت رو درج کنی ممنون میشم .

rnm123
پنج شنبه 13 فروردین 1388, 11:30 صبح
ببین دوست عزیز اصلا به اون چیزی که گفتی نیازی نیست اول باید یک دیتا ست تعریف کنی و اطلاعات موجود در بانک را در آن بریزی


Ds1 = _Connection.DataSet_Table_Creat("Hours", ObjPram);
Dv1.Table = Ds1.Tables["Hours"];
Dv1.Sort = "_DateBegin, _DateEnd";
for (int i = 0; i < Dv1.Count; i++)
{
dataGridView1.Rows.Add();
dataGridView1[0, i].Value = Dv1[i][1];
dataGridView1[1, i].Value = Dv1[i][5];
dataGridView1[2, i].Value = Dv1[i][6];
dataGridView1[3, i].Value = Dv1[i][3];
dataGridView1[4, i].Value = Dv1[i][2];
}

در کد فوق یک کلاسی تعریف کرده ام و در آن یک تابع برای اتصال به بانک و خواندن اطلاعات از آن تعریف کرده ام و به کمک آن دیتاست خود را ( Ds1 ) پر میکنم . بعد یک دیتا ویو تعریف میکنم و بعد نام تیبل را برابر با تیبل دیتاست قرار میدهم.
بعد به کمک حلقه یکی یکی ردیف به دیتاگرید ویو اضافه میکنیم و طیق کد فوق آنها را مقدار دهی میکنیم البته لازم به یادآوری است که ستونهای دیتاگریدویو را قبلا در زمان طراحی ایجاد کرده ایم که در مثال فوق دیتا گریدویو ما 5 تا ستون دارد( 5 مقدار دهی در داخل حلقه ) . همچنین میتوانیم ستونها را قبل از کد فوق از طریق کدنویسی تعریف کنیم

shervin_agh67
پنج شنبه 13 فروردین 1388, 12:58 عصر
کسی می دونه چجوری میشه اطلاعات حاصل از پرس و جوی LINQ رو به دیتاست تبدیل کرد ؟ اگه بشه این کار رو کرد بقیه کار میشه کدی که دوستمون نوشت.

rnm123
پنج شنبه 13 فروردین 1388, 16:11 عصر
دوست عزیز در msdn یک مطلبی دیدم به عنوان LINQ to Dataset یک مثال هایی هم از نحوه ایجاد دیتاست ها و جداول از linq نوشته بود فکر میکنم اگر آنها را مطالعه کنی مشکلت حل میشود.

shervin_agh67
پنج شنبه 13 فروردین 1388, 21:37 عصر
آقا دستت درد نکنه خیلی گلی واقعا یک مشکل خیلی بزرگ رو حل کردی . وقت باشه جبران کنیم . تا یک چند وقت دیگه یک جزوه خیلی جالب از مثالهای LINQ آماده می کنم و توی سایت می گذارم .