PDA

View Full Version : سوال: اشکال در حذف اطلاعات



silvery
شنبه 24 تیر 1391, 14:13 عصر
سلام خسته نباشید
من یه برنامه نوشتم که وقتی روی دکمه ی حذف کلیک میکنم سطر انتخاب شده از گریدویو رو پاک میکنه. هر سطر یه کد داره که اوتوماتیک مقدار دهی میشه (از طریق پایگاه داده )و مقدارش از صفر شروع میشه بنابراین کد هر سطر با شماره ی سطر برابره.طبیعتا وقتی یه سطر رو پاک میکنم سطرای بعد از اون یه ردیف به بالا منتقل میشن.اینجوری ترتیب به هم میخوره چون فرضا اگه من سه تا سطر داشته باشم و سطر دوم رو پاک کنم سطر سه جای اون قرار میگیره و به این ترتیب شماره ی سطر میشه دو اما کدش همچنان سه هست. و این مسئله کار جستجو رو هم که بر اساس ستون کد انجام میشه رو به هم میریزه چون با این کار وقتی من کد دو رو وارد کنم اطلاعات کاربر با کد سه رو برام برمیگردونه.باید چیکار کنم تا این مشکل حل شه (با توجه به اینکه این کدا به کاربران داده میشه پس نباید تغییر بکنن پس نمیتونم با هربار حذف کدا رو رفرش کنم تا دوباره از صفر مرتب بشن)
امیدوارم منظورمو فهمیده باشید.

tooraj_azizi_1035
شنبه 24 تیر 1391, 14:26 عصر
سلام
رویدادی که بعد از حذف اتفاق می افته رو پیدا کن بعد سعی کن با یه حلقه از همه کدهای اون سطر خاص به بعد یکی کم کنی.

0
1
2
3 (حذف)
4 میشه 3
5 میشه 4
6 میشه 5

کد فرضی:



private void DataGridView1_UserDeletingRow(object sender,
DataGridViewRowCancelEventArgs e)
{


for(int i=e.Row.Index;i<=DataGridView1.Rows.Count<i++)
ValueDataGridView1.Rows[i].Cells["Code"].Value--;


}

Mahmoud.Afrad
شنبه 24 تیر 1391, 14:37 عصر
در دستور سلکتی که با اون گرید رو پر میکنید ستون id رو هم سلکت کنید. با این کار موقع حذف یک رکورد مقدار آی دی رو میخونید که با مقدار شماره ردیف متفاوت هست.

silvery
یک شنبه 25 تیر 1391, 10:56 صبح
سلام
رویدادی که بعد از حذف اتفاق می افته رو پیدا کن بعد سعی کن با یه حلقه از همه کدهای اون سطر خاص به بعد یکی کم کنی.

0
1
2
3 (حذف)
4 میشه 3
5 میشه 4
6 میشه 5

کد فرضی:



private void DataGridView1_UserDeletingRow(object sender,
DataGridViewRowCancelEventArgs e)
{


for(int i=e.Row.Index;i<=DataGridView1.Rows.Count<i++)
ValueDataGridView1.Rows[i].Cells["Code"].Value--;


}


گفتم که نباید کدا تغییری بکنن چون هر کدوم ب یه نفر اختصاص داده شده.اینجوری با هر حذف باید یه بار کدا رو دوباره بهشون بدم.مثلا توی نرم افزار تاکسیرانی هر مشترک یه کد اشتراک داره که همیشه مال اونه.خوب اگه ما یه مشترکو حذف کنیم که نمیتونیم به همه ی مشترکای قبل از اون دوباره شماره اشتراک بدیم که

مرتضی تقدمی
یک شنبه 25 تیر 1391, 11:11 صبح
سلام
شماره اشتراک با شماره ردیف فرق می کنه. شماره اشتراک یک فیلدیه که برای کار با بانک اطلاعاتی فرد ازش استفاده میکنی اما شماره ردیف یه چیر نمایشی توی دیتاگرید هستش. شما با شماره ردیف کاری نداری که.
برای اینکه با حذف یا اضافه کردن هر ردیفی به دیتا گرید شماره ردیف بصورت خودکار ست بشه, این قطعه کد رو به رویداد cell paiting دیتاگرید اضافه کنید:



if (e.RowIndex >= 0 && e.ColumnIndex == 0)
DGV.Rows[e.RowIndex].Cells[0].Value = e.RowIndex + 1;


موفق باشید