PDA

View Full Version : اضافه کردن (Insert) یک سطر در هر جای دلخواه یک DataGrid



رضا جاسبی
دوشنبه 14 مرداد 1387, 22:55 عصر
سلام
یک سوال در مورد Word داشتم که جوابی نگرفتم. یک سوال هم در مورد رنگ نوشته textBox وقتی ReadOnly باشد داشتم اون هم همینطور.
امیدوارم این مشکلم رو یک نفر حل کنه.
من می خوام در یک dataGrid یک سطر خالی Inset کنم. مشکلم اینه که اون سطر به انتهای گرید اضافه میشه ولی من می خوام در وسط گرید سطر اضافه کنم
کدی که نوشتم هم تقریبا اینجوریه.



DataTable dt = DGrid.DataSource;
DataRow Row = dt.NewRow();
dt.Rows.InsertAt(Row,Dgrid.CurrentRowIndex);
...


کار Insert رو انجام میده ولی مثل ADD به انتهای لیست اضافه میکنه.

asefy2008
دوشنبه 14 مرداد 1387, 23:55 عصر
این راه حل خوب نیست ولی می گم اون سطری روکه می خوای زیر اون یک سطر اضافه کنی پیدا کنی بعد همه رو به سمت پایین شیفت بدی ولی این راه حل در برنامه های بزرگ کاربردی نداره

رضا جاسبی
سه شنبه 15 مرداد 1387, 00:25 صبح
دستور InsertAt رو در Debug چک می کنم و کارش رو درست انجام میده. یعنی در DataTable به نام dt سطرهام همونطوری هستند که می خوام اما وقتی DGrid.DataSource = dt می ذارم نتیجه اونی میشه که گفتم. خودم هم به فکر شیفت دادن بودم البته گریدم کوچکه و فکر نمی کنم بیشتر از سه یا چهار سطر داشته باشه. اما منطقا باید راه بهتری باشه.
گفتید این راه حل خوب نیست. راه بهتری سراغ دارید؟

tthenry14plus
سه شنبه 15 مرداد 1387, 02:53 صبح
DataTable dt = DGrid.DataSource;
DataRow Row = dt.NewRow();
dt.Rows.InsertAt(Row,Dgrid.CurrentRowIndex);
...



به نظرتون نباید اینطوری باشه؟


DataTable dt = DGrid.DataSource;
DataRow Row = dt.NewRow();
dt.Rows.InsertAt(Row,(int)(DGrid.Rows.Count / 2)

رضا جاسبی
سه شنبه 15 مرداد 1387, 09:35 صبح
به نظرتون نباید اینطوری باشه؟


DataTable dt = DGrid.DataSource;
DataRow Row = dt.NewRow();
dt.Rows.InsertAt(Row,(int)(DGrid.Rows.Count / 2)


نه. من نمی خوام دقیقا وسط گریدم یک سطر Insert کنم. می خوام هر سطری که انتخاب کردم قبلش (یا بعدش فرقی نمی کنه) Insert کنم. مشکل هم اینه که همیشه در انتهای لیست اضافه می کنه. در حالی که در DataTable سطرها درست اضافه شدند. یک چیز دیگه ای باید در DataTable باشه. چون حتی گریدم رو با یه DataSoure = null خالی می کنم ولی از DataTable که مقدار می گیره بهم ریخته و سطر جدید به انتها اضافه میشه.

رضا جاسبی
پنج شنبه 17 مرداد 1387, 23:19 عصر
ممنون که جواب ندادید. خودم پیدا کردم : باید AcceptChanges می کردم.

bpzone
پنج شنبه 17 مرداد 1387, 23:29 عصر
آقا رضا میشه نمونه کدی رو که زدی بزاری ؟

رضا جاسبی
شنبه 19 مرداد 1387, 00:14 صبح
دوست عزیز کد رو که گذاشتم. فقط یک کم باید اضافه کنیم:



DataTable dt = DGrid.DataSource;
DataRow Row = dt.NewRow();
//Give Value to Row :
// Row[0] = Value1;
// Row[1] = Value2;
...

dt.Rows.InsertAt(Row,Dgrid.CurrentRowIndex);

dt.AcceptChanges();
DGrid.DataSource = dt;
...




من به دلایلی (که یکیش دانش کمه) خودم دستی کنترلهام مثل لیست و کمبو و گرید رو پر می کنم.