PDA

View Full Version : مشکل با delete سطر در گرید ویو



amin750
شنبه 02 شهریور 1392, 15:43 عصر
سلام
من میخام با زدن کلید delete توی گرید ویو سطر مورد نظرم پاک بشه خیلی گشتم اینم کدمه ولی کار نمیکنه
protected void dgPrevious_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand("delete from news where id=@id",con);
cmd.Parameters.AddWithValue("@id", dgPrevious.Rows[e.RowIndex].Cells[0].Text);
cmd.ExecuteNonQuery();
con.Close();
dgBind();
}
نمیتونه شماره سطر رو پیدا کنه
چکار کنم؟

mahdioo12194
شنبه 02 شهریور 1392, 16:31 عصر
commandname رو بزار delete ببین کار می کنه؟!!!

amin750
شنبه 02 شهریور 1392, 17:50 عصر
commandname رو بزار delete ببین کار می کنه؟!!!
از link button استفاده نکردم از از command field خود گرید ویو استفاده کردم!! با اون بگین

amin750
شنبه 02 شهریور 1392, 22:17 عصر
کسی از دوستان نیست راهنمایی کنه؟

mahdioo12194
شنبه 02 شهریور 1392, 22:23 عصر
dgBind();


اسم گرید ویوت چیه؟



dgPrevious_RowDeleting

hessam2003
شنبه 02 شهریور 1392, 22:28 عصر
سلام.
کد delete را درون یک procedure در SQL بنویس و بعد از اون در برنامت استفاده کن.
دیگه این دردسرارو نداری و امنیت و سرعت برنامه نویسیتم افزایش پیدا میکنه.
موفق باشی

mahdioo12194
شنبه 02 شهریور 1392, 22:31 عصر
???????/??

amin750
یک شنبه 03 شهریور 1392, 11:17 صبح
dgBind();


اسم گرید ویوت چیه؟



dgPrevious_RowDeleting


اسم گرید ویو dgPrevious
dgPrevious_RowDeleting این هم مربوط به رویداد row deleting گرید ویو هستش

mahdioo12194
یک شنبه 03 شهریور 1392, 12:31 عصر
پس باید بنویسی



dgPreviousBind();

amin750
یک شنبه 03 شهریور 1392, 12:43 عصر
پس باید بنویسی



dgPreviousBind();



نه ببینین اون dgbind() که دیدین او بالا نوشتم یه تابعه که توی برنامه صدا زده میشه
الان مشکل من با این کد
dgPrevious.Rows[e.RowIndex].Cells[0].Text
این کد باید سطری رو که باتن delete زده میشه رو به ما بده که نمیده
مشکل اینجاست!!
اینم یه عکس که بهتر متوجه بشین
109685
من میخوام که مثلا delete سطر 8 زده بشه بگه که ای دی شما 8 هست

mahdioo12194
یک شنبه 03 شهریور 1392, 13:00 عصر
یه شماره ایندکس سطر داریم یه id خبر این دو تا با هم فرق می کنه

اول مقدار cell رو تغییر بده 1 یا 2 یا .. ببین درست می شه؟!

اگه نشد ضمیمه کن ببینم مشکل چیه؟!

amin750
یک شنبه 03 شهریور 1392, 13:23 عصر
یه شماره ایندکس سطر داریم یه id خبر این دو تا با هم فرق می کنه

اول مقدار cell رو تغییر بده 1 یا 2 یا .. ببین درست می شه؟!

اگه نشد ضمیمه کن ببینم مشکل چیه؟!

بازم نشد
فهمیدم مشکلش چیه
مشکل اینجاست که index رو برابر id قرار میده
مثلا اگه ایندکس 2 ای دی 15؛ میره ای دی 2 رو پاک میکنه نه ای دی 15 رو
من میخوام ای دی 15 رو پاک کنه!!!

zerocool151
یک شنبه 03 شهریور 1392, 13:35 عصر
خوب بصورت دستی یک delete بساز و commandArgument رو برابر اون مقداری که میخوای بر اساسش حذف کنی و بزار

amin750
یک شنبه 03 شهریور 1392, 13:42 عصر
خوب بصورت دستی یک delete بساز و commandArgument رو برابر اون مقداری که میخوای بر اساسش حذف کنی و بزار

دستی میتونم بسازم ولی مشکل اینجاست که باید دستورات رو توی row command نوشت منم میخوام 2تا باتن بذارم نه یکی( یکی delete یکی هم edit ) اینجوری واسه edit به مشکل بر میخورم
واسه edit میشه کاری کرد؟

zerocool151
یک شنبه 03 شهریور 1392, 13:47 عصر
واسه edit هم به همین منوال عمل کن دیگه
یه دکمه بزار و commandname بهش بده
البته میتونی از edite خود grid استفاده کنی تناقضی نداره

amin750
یک شنبه 03 شهریور 1392, 13:55 عصر
واسه edit هم به همین منوال عمل کن دیگه
یه دکمه بزار و commandname بهش بده
البته میتونی از edite خود grid استفاده کنی تناقضی نداره
بعد اینکه command name رو دادم کدشو کجا بنویسم؟؟

واسه edite خود گرید هم میشه یه نگاه به اینجا بندازی؟؟ این پست (http://barnamenevis.org/showthread.php?415745-%D8%A8%D8%AF%D8%B3%D8%AA-%D8%A2%D9%88%D8%B1%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%D8%B2-sql-%D8%A8%D8%A7-sql-data-reader)

zerocool151
یک شنبه 03 شهریور 1392, 14:06 عصر
تو رخداده RowCommand
به این مثال نیگا کن


<asp:TemplateField HeaderText="ویرایش">
<ItemTemplate>
<asp:LinkButton ID="LinkButton7" runat="server" CommandArgument='<%# Eval("Id") %>' CommandName="Edit">ویرایش</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="حذف">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" OnClientClick="return confirm('آیا مطمئن هستید میخواهید داده مورد نظر را حذف کنید?')" CommandArgument='<%# Eval("Id") %>' CommandName="Delete">حذف</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>



protected void gvFree_RowCommand(object sender, GridViewCommandEventArgs e)
{
int id = Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "Delete")
{
//Delete Code
}

if (e.CommandName == "Edit")
{
//Edited Code


}
}

amin750
یک شنبه 03 شهریور 1392, 14:34 عصر
مرسی با این مثال متوجه شدم فقط مونده بودم از command name توی row command چطوری استفاده کنم
بازم ممنون:لبخندساده:

mahdioo12194
یک شنبه 03 شهریور 1392, 16:31 عصر
البته من از commandfield استفاده می کنم عمل خذف رو انجام میده بدون نوشتن این کدها!!



<asp:CommandField DeleteText="حذف" ShowDeleteButton="True"
/>




همین!!

mahdioo12194
یک شنبه 03 شهریور 1392, 16:44 عصر
datakeyname گریدهم گذاشتم روی کلید اصلی

amin750
یک شنبه 03 شهریور 1392, 17:02 عصر
datakeyname گریدهم گذاشتم روی کلید اصلی
من از این راه رفتم ولی به نتیجه ای نرسیدم میشه بگی چجوری نوشتی؟

mahdioo12194
یک شنبه 03 شهریور 1392, 17:06 عصر
من از این راه رفتم ولی به نتیجه ای نرسیدم میشه بگی چجوری نوشتی؟

کدشو تو پست 19 گذاشتم

amin750
یک شنبه 03 شهریور 1392, 17:26 عصر
اونو دیدم مگه نباید واسه رویداد Row_Deleting کد نوشت؟؟
نکنه منظورت SqlDataSource ؟؟

mahdioo12194
یک شنبه 03 شهریور 1392, 18:11 عصر
اونو دیدم مگه نباید واسه رویداد Row_Deleting کد نوشت؟؟
نکنه منظورت SqlDataSource ؟؟

نه نمی خواد فقط همونو بنویس!!!!

amin750
یک شنبه 03 شهریور 1392, 18:28 عصر
نه نمی خواد فقط همونو بنویس!!!!
اصلا امکان نداره بدون کد نویسی Row Deleting و Row Editing کار کنه
مگه اینکه به SqlDataSource لینکش کرده باشی باز اونم ادیتش نمیره به صفحه دیگه

mahdioo12194
یک شنبه 03 شهریور 1392, 18:43 عصر
مظورت اینه که گریدویو به sqldatasource وصله یا نه ؟!!

mahdioo12194
یک شنبه 03 شهریور 1392, 18:55 عصر
شما اصلا یه کاری بکن دو تا باتن مگه نداری commandname یکی رو بزار edit اون یکی رو بزار delete امتحان کن نتیجه رو بگو!!

amin750
یک شنبه 03 شهریور 1392, 20:57 عصر
مظورت اینه که گریدویو به sqldatasource وصله یا نه ؟!!
آره اگه وصل نباشه کار نمیکنه

amin750
یک شنبه 03 شهریور 1392, 20:58 عصر
شما اصلا یه کاری بکن دو تا باتن مگه نداری commandname یکی رو بزار edit اون یکی رو بزار delete امتحان کن نتیجه رو بگو!!
با template field مشکلی ندارم براش کد نوشتم کار میکنه