PDA

View Full Version : عمل حذف از gridview



سمیرا55
سه شنبه 04 تیر 1392, 15:52 عصر
سلام
من یک gridview دارم داخلش یک templatefield گذاشتم به این صورت که داخل templateitem اش یک جدول با یک سطر و چند تا ستون قرار دادم داخل یکی از <td> ها هم یک دکمه حذف گذاشتم بقیه ستون ها رو هم با دستور eval مقادیرشونو می خونم در ضمن gridview رو هم به بانک وصل نکردم از راه نوشتن کد این اتصال رو برقرار کردم داخل همون جدول یک hieddenfield هم گذاشتم و این hieddenfield رو هم بایند کردم که فیلد id رو بخونه
رو دکمه حذف یک کدی نوشتم ولی حذف نمی کنه
در کل میخام داخل این gridview که وقتی اجرا می کنم و هر سطرش دکمه حذف رو داره عمل حذف رو انجام بده ولی erro میده به postback که معتبر نیست اگه کمکم کنید ممنون میشم.
اینم کدش

; string ID
; ID = ((sender as ImageButton).Parent.FindControl("hiddenfield1") as HiddenField).Value

SqlConnection co1 = new SqlConnection
co1.ConnectionString = "Data Source=.;Initial Catalog=db;Integrated Security=True"
co1.Open();
string qry1 = "delete from table1 where table1.id='" + ID + "'";
SqlCommand cmd1 = new SqlCommand(qry1, co1);

cmd1.ExecuteNonQuery();
co1.Close();

اوبالیت به بو
سه شنبه 04 تیر 1392, 16:15 عصر
درود بر شما

ستون آخر رو که TemplateField کردید یک ImageButton بگذارید. خاصیت CommandArgument رو برابر Eval("ID") یا ستون کلید اصلی قرار بدید و خاصیت CommandName رو برابر DeleteRow.

حال در رویداد RowCommand گرید بنویسید :



if(e.CommandName=="DeleteRow"){
Delete commands....
}



در PageLoad هم حواستون باشه که Page.IsPostBack رو کنترل کنید.

سمیرا55
سه شنبه 04 تیر 1392, 19:12 عصر
باتشکر از شما
کارهایی که گفتید انجام دادم ولی به این خط از کدم error میده در واقع به نوع تبدیل داده error میده
Int32 id;
id = Convert.ToInt32(((sender as ImageButton).Parent.FindControl("hiddenfield1") as HiddenField).Value);
در ضمن فیلد id رو در دیتابیسم از نوع int گرفتم
اگه کمکم کنید ممنون میشم.

اوبالیت به بو
چهارشنبه 05 تیر 1392, 08:54 صبح
این دستور رو حذف کنید.

در قسمت CommandArgument دکمه حذف هم بنویسید:


Eval((int)"ID")