PDA

View Full Version : روش حل این خطا در GridVew !!



merlin_vista
شنبه 05 آبان 1386, 20:21 عصر
آقا من یک گرید ویو دارم که در یکی از ستون های آن از لیبل استفاده کردم و مقدار Yes و No را نمایش میدهد و در حالت Edit آن نیز یک DropDroenList گزاشتم که کاربر بتونه این مقدار را عوض کنه !! حالا وقتی میخواهم Update کنم این پیغام را میدهد ، لازم به ذکر است که برای 1 سطر مشکلی ندارم و برای 2 یا چند سطر مشکل دارد ؛ در ضمن گرید ویو من در یک Update Panel وجود دارد !!

کد دکمه آپدیت :

string txtchek;
protected void GVnazar_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
try
{
foreach (GridViewRow i in GVnazar.Rows)
{
DropDownList DDLchek = (DropDownList)i.FindControl("DropDownList1");
txtchek = DDLchek.SelectedItem.Text;

}
string strUpdate = "UPDATE nazar SET chek=@chek WHERE id = @id";
SqlCommand mySqlCmd = new SqlCommand(strUpdate, con);
mySqlCmd.Parameters.AddWithValue("@id", GVnazar.DataKeys[e.RowIndex].Value);
mySqlCmd.Parameters.AddWithValue("@chek", this.txtchek.ToString());
con.Open();
mySqlCmd.ExecuteNonQuery();
con.Close();
this.GVnazar.EditIndex = -1;
GVboind();
}
catch (SqlException x)
{
this.lblsqleror.Visible = true;
this.lblsqleror.Text = x.Message.ToString().Trim();
return;
}
}

خطایی که میدهد :

Object reference not set to an instance of an object.

و محل خطا :

txtchek = DDLchek.SelectedItem.Text;

mahdi_farhani
شنبه 05 آبان 1386, 21:55 عصر
دوست عزیز میشه یه توضیح بدی که چرا حلقه گذاشتی ..........
این حلقه ای که شما گذاشتید به فرض اینکه ارور نداشته باشه ، مقدار Dropdown اخرین سطر گرید رو بر میگردونه...

merlin_vista
شنبه 05 آبان 1386, 22:06 عصر
پس فکر کنم مال همین باشه !!
من فکر کردم که باید داخل همه سلول های گرید ویو بگردم !!
حالا اگه بخواهم داپ درون لیست همان سطر را انتخاب کنم باید چکار کنم !!
میشه کد را ویرایش کنید برای یک سطر که Edit آن فعال شده باشد

mehrdad201
شنبه 05 آبان 1386, 23:41 عصر
فکر کنم اگه از e.oldvalues و e.newvalues استفاده کنی مشکلت حل شه

موقعیکه داری آپدیت می کنی با استفاده از پراپرتی oldvalues میتونی مقدار های قدیمی رو بخونی
newvalues هم مال مقادیری هست که چدیدا وارد شدن

merlin_vista
یک شنبه 06 آبان 1386, 08:19 صبح
آقا من اینجوری نوشتم ؛ مشکل نداره :

GridViewRow rowEdit = GVnazar.Rows[e.RowIndex];
txtchek = ((DropDownList)rowEdit.FindControl("DropDownList1")).SelectedValue.ToString();

mehrdad201
یک شنبه 06 آبان 1386, 16:40 عصر
اون راهی که من گفتم رو امتحان کردی ؟!