PDA

View Full Version : حذف از datagridview



negar222
سه شنبه 23 شهریور 1395, 18:55 عصر
سلام
من برای حذف یک سطر از دیتاگریدویو کد زیر رو نوشتم ولی هر سطری رو که حذف میکنم توی دیتابیس سطر اول حذف شده.. جالب اینجاست که وقتی if رو برمیدارم کد درست کار میکنه؟؟!!!!!
ممنون میشم راهنماییم کنید...

private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
if (MessageBox.Show("آیا میخواهید سطر انتخاب شده حذف گردد؟", "اخطار", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{

tbl_SherkateForoshTableAdapter.DeleteQuery(dataGri dView1.SelectedRows[0].Cells[1].Value.ToString());
}
else
e.Cancel = true;

}

kamiloted
سه شنبه 23 شهریور 1395, 19:08 عصر
سلام
من برای حذف یک سطر از دیتاگریدویو کد زیر رو نوشتم ولی هر سطری رو که حذف میکنم توی دیتابیس سطر اول حذف شده.. جالب اینجاست که وقتی if رو برمیدارم کد درست کار میکنه؟؟!!!!!
ممنون میشم راهنماییم کنید...

private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
if (MessageBox.Show("آیا میخواهید سطر انتخاب شده حذف گردد؟", "اخطار", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{

tbl_SherkateForoshTableAdapter.DeleteQuery(dataGri dView1.SelectedRows[0].Cells[1].Value.ToString());
}
else
e.Cancel = true;

}


سلام .
اینو بنویس


if (this.dataGridView1.SelectedRows.Count > 0)
{
dataGridView1.Rows.RemoveAt(this.dataGridView1.Sel ectedRows[0].Index);
}

negar222
سه شنبه 23 شهریور 1395, 19:20 عصر
خب SelectedRows[0] یعنی سطر جاری اگه اشتباه بود بعد از برداشتن if بازم درست کار نمیکرد.. البته currentRow هم امتحان کردم نشد...

daniyaltjm
سه شنبه 23 شهریور 1395, 20:38 عصر
سلام

شرطتون اشتباهه اینطوری بنویسین:

private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
DialogResult dr=MessageBox.Show("آیا میخواهید سطر انتخاب شده حذف گردد؟", "اخطار", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dr == DialogResult.Yes)
{

tbl_SherkateForoshTableAdapter.DeleteQuery(dataGri dView1.SelectedRows[0].Cells[1].Value.ToString());
}
else
e.Cancel = true;

}

negar222
سه شنبه 23 شهریور 1395, 20:55 عصر
سلام

شرطتون اشتباهه اینطوری بنویسین:

private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
DialogResult dr=MessageBox.Show("آیا میخواهید سطر انتخاب شده حذف گردد؟", "اخطار", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dr == DialogResult.Yes)
{

tbl_SherkateForoshTableAdapter.DeleteQuery(dataGri dView1.SelectedRows[0].Cells[1].Value.ToString());
}
else
e.Cancel = true;

}



ممنون از پاسختون ولی فرقی با کد قبلی نداشت جواب نداد.. عجیبه if رو حذف میکنم درست میشه !!!!:ناراحت:

mr.sirwan
سه شنبه 23 شهریور 1395, 21:40 عصر
ممنون از پاسختون ولی فرقی با کد قبلی نداشت جواب نداد.. عجیبه if رو حذف میکنم درست میشه !!!!:ناراحت:

ببینین دوست عزیز وقتی شما پنجره ای رو روی فرم جاری که حاوی دیتا گرید ویو هستش باز میکنین اعم از مسج باکس و یا دیگر فرم ها، با بسته شدن این پنجره (در این مورد، همون مسج باکس) CurrentRow به اولین سطر موجود در دیتاگریدویو برمیگرده، یعنی سطری که بعد از بسته شدن میسج باکس در حالت انتخاب قرار میگیره با سطر انتخابی شما قبل از باز شدن مسج باکس، برابر نیستند.
برای مرتفع کردن این مشکل شما قبل از اینکه مسج باکس رو به کاربر نشون بدین و از کاربر تایید بگیرین، بیاین مقدار ستونی که لازم دارین رو از سطر انتخاب شده داخل یه متغیر بذارین و تمام، به اینصورت عمل کنین:

private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
string CellValue = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
if (MessageBox.Show("آیا میخواهید سطر انتخاب شده حذف گردد؟", "اخطار", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
tbl_SherkateForoshTableAdapter.DeleteQuery(CellVal ue);
}
else
e.Cancel = true;
}

negar222
سه شنبه 23 شهریور 1395, 22:30 عصر
ببینین دوست عزیز وقتی شما پنجره ای رو روی فرم جاری که حاوی دیتا گرید ویو هستش باز میکنین اعم از مسج باکس و یا دیگر فرم ها، با بسته شدن این پنجره (در این مورد، همون مسج باکس) CurrentRow به اولین سطر موجود در دیتاگریدویو برمیگرده، یعنی سطری که بعد از بسته شدن میسج باکس در حالت انتخاب قرار میگیره با سطر انتخابی شما قبل از باز شدن مسج باکس، برابر نیستند.
برای مرتفع کردن این مشکل شما قبل از اینکه مسج باکس رو به کاربر نشون بدین و از کاربر تایید بگیرین، بیاین مقدار ستونی که لازم دارین رو از سطر انتخاب شده داخل یه متغیر بذارین و تمام، به اینصورت عمل کنین:

private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
string CellValue = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
if (MessageBox.Show("آیا میخواهید سطر انتخاب شده حذف گردد؟", "اخطار", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
tbl_SherkateForoshTableAdapter.DeleteQuery(CellVal ue);
}
else
e.Cancel = true;
}




بله کاملاً درسته ممنون از راهنماییتون..