PDA

View Full Version : There is no row at position n



resident
جمعه 19 بهمن 1386, 20:19 عصر
سلام.
من کدهای زیر رو برای حذف یک رکورد از دیتاگریدویو نوشتم . وقتی رکورد موردنظر رو انتخاب می کنم و دکمه حذف رو می زنم Exception هایی مشابه Exceptionزیر با ایندکس های مختلف میده. نمیدونم چرا میگه این در این ایندکس رکوردی وجود نداره.

There is no row at position 2
محل Exception:

DataRow dr =dt.Rows[rowindex];

اینم کل کدم:


privatevoid delete_Click(object sender, EventArgs e)
{
#region
if (MessageBox.Show("آیا برای حذف این طرح مطمئن هستید؟","حذف طرح",MessageBoxButtons.OKCancel,MessageBoxIcon.Questio n,MessageBoxDefaultButton.Button1,MessageBoxOption s.RtlReading)==DialogResult.OK);
{
int rowindex = dgv1.CurrentCell.RowIndex;

DataRow dr =dt.Rows[rowindex];
string pk = (string)dr["code_pishnahade_tarh"];
cmd.CommandText = string.Format("delete from pishnahade_tarh where code_pishnahade_tarh='{0}'", pk);
cmd.Connection = cn;
cn.Open();
int numdeleted = cmd.ExecuteNonQuery();
cn.Close();
if (numdeleted != 0)
{
dgv1.Rows.RemoveAt(rowindex);
MessageBox.Show("طرح مورد نظر حذف شد");
}
}
#endregion
}
ممنون میشم راهنماییم کنید

resident
جمعه 19 بهمن 1386, 22:51 عصر
خواهش می کنم راهنماییم کنید. شدیدا به کمکتون نیاز دارم.

amir_pro
جمعه 19 بهمن 1386, 23:01 عصر
من برای حذف یک رکورد از این کد استفاده می کنم. مشکلم را حل می کنه.


if (FarsiMessageBox.MsgBox.ShowMessage(0, "آیا مطمئن هستید؟", "حذف کالا",
"بله", "خیر", "", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign) == DialogResult.Yes)
{
var.cmd.Parameters.Clear();
var.cmd.CommandText = "delete * from Anbar where namekala='" + DgvDel.CurrentRow.Cells[3].Value.ToString() + "' and tedad='" + DgvDel.CurrentRow.Cells[4].Value.ToString() + "' and ghvahed='" + DgvDel.CurrentRow.Cells[5].Value.ToString() + "' and model='" + DgvDel.CurrentRow.Cells[6].Value.ToString() + "' and mablaghkala='" + DgvDel.CurrentRow.Cells[7].Value.ToString() + "'";
var.cmd.Connection = var.con;
var.con.Open();
var.cmd.ExecuteNonQuery();
var.con.Close();
}

اگر مشکلی داشتی بگو

resident
جمعه 19 بهمن 1386, 23:48 عصر
amir_pro جان ممنون از راهنماییتون.
ولی var رو نمی شناسه. من ازVS 2005 استفاده می کنم. فکر کنم شما از 2003 استفاده میکنید.

choobin84
شنبه 20 بهمن 1386, 06:28 صبح
برای اینه که ایندکس ردیف ها از صفر شروع میشه نه از یک

DataRow dr =dt.Rows[rowindex-1];

resident
شنبه 20 بهمن 1386, 07:16 صبح
برای اینه که ایندکس ردیف ها از صفر شروع میشه نه از یک

DataRow dr =dt.Rows[rowindex-1];
choobin84 جان باز هم همون استثنا رخ میده. درست نشد.:ناراحت:

Masoud_TB
شنبه 20 بهمن 1386, 08:48 صبح
دوست عزیز من فکر می کنم بهتر باشه از Find استفاده کنی و بر اساس PrimaryKey ابتدا Row مورد نظرت رو پیدا کنی و بعد پاکش کنی.

نکته دوم هم اینکه به نظرم شما رو تغییر Row گریدت کدی نوشتی که وقتی رکورد رو پاک میکنی از اونجا خطا می گیری نه از دستور حذفت.