PDA

View Full Version : اشکال در ویرایش datagrid



Neda243
سه شنبه 24 فروردین 1389, 11:05 صبح
اشکال در ویرایش datagrid
باسلام و خسته نباشید
من برنامه ویرایش در datagrid را در محیط asp.net با کد C#نوشتم . برنامه به خوبی اجرا میشه و من بر روی کلید ویرایش کلیک می کنم. ولی به محض اینکه دکمه ذخیره را می زنم این پیام خطا ظاهر می شه :

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

چی کار کنم؟
اینم کد برنامه:

protected void DataGrid1_UpdateCommand(object source, DataGridCommandEventArgs e)
{
int f = (int)this.DataGrid1.DataKeys[e.Item.ItemIndex];
دقیقااینجا خطا میگیره!

string fnam = (e.Item.Cells[1].Controls[0] as TextBox).Text;
string famil = (e.Item.Cells[2].Controls[0] as TextBox).Text;
string email = (e.Item.Cells[3].Controls[0] as TextBox).Text;

SqlConnection con = new SqlConnection();
con.ConnectionString = "data source=(local);initial catalog=comp;Integrated Security=True";

SqlCommand cmd = new SqlCommand("update T1 set nam=@fnam,famil=@famil,email=@email where id=@id", con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@id", f);
cmd.Parameters.AddWithValue("@nam", fnam);
cmd.Parameters.AddWithValue("@famil", famil);
cmd.Parameters.AddWithValue("@email", email);

con.Open();
cmd.ExecuteNonQuery();
con.Close();

DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter("select * from T1", con);
sda.Fill(ds, "T1");

DataRow dr = ds.Tables["T1"].Rows[e.Item.ItemIndex];
dr["nam"] = fnam;
dr["famil"] = famil;
dr["email"] = email;

this.DataGrid1.EditItemIndex = -1;
this.DataGrid1.DataBind();
}