PDA

View Full Version : سوال: حذف ردیف از گریدویو



rahil_2008
چهارشنبه 04 فروردین 1389, 21:05 عصر
سلام دوستان
من تو یه gridview اومدم یه ستون checkbox گذاشتم و یه دکمه delete هم به اون اضافه کردم با این دستور:



<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
onpageindexchanging="GridView1_PageIndexChanging" PageSize="4">
<Columns>
<asp:TemplateField >
<HeaderTemplate>
<asp:Button Text="Delete" ID="btnDelete" runat="server" OnClick="btnDelete_Click" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="checkbox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

بعد تو رویداد btnDelete_Click نوشتم:



protected void btnDelete_Click(object sender, EventArgs e)
{
foreach (GridViewRow gvr in GridView1.Rows)
{
if(((CheckBox)gvr.Cells[0].Controls[0].FindControl("checkbox1")).checked==true)

}
}

اولا از اون خط if کلی ایراد می گیره دوما نمی دونم دستور پاک کردن ردیفو چه جوری بنویسم؟
لطفا راهنمایی کنید

ali_mnkt
پنج شنبه 05 فروردین 1389, 01:12 صبح
دوست عزیز برای این که بتونی با کلیک یک button که به gridview اضافه کردی یک عملی

انجام بشه اولا باید از رویداد Rowcommand خود gridview استفاده کنی ثانیا باید در

خصوصیت command name مربوط به دکمه هم یه اسم به اون بدی تا مشخص بشه که

کدوم دکمه در grid view کلیک شده ( البته اگه تعداد دکمه ها در gridview بیشتر از یکی

باشه ).

خوب حالا در میتونی از کد زیر هم استفاده کنی




protected void GridView1_RowCommand1(object sender, GridViewCommandEventArgs e)
{

if (e.CommandName == "delete_row")
{
int i;
for (i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("checkbox1");

if (cb.Checked == true)
{
DataLayer.users.DeleteRow(Convert.ToInt32(GridView 1.Rows[i].Cells[0].Text));
}
}
GridView1.DataBind();
}
}




راستی در سلول صفرم grid view من id ردیف رو نمایش می دم

rahil_2008
پنج شنبه 05 فروردین 1389, 21:14 عصر
سلام دوست عزیز
ممنون از راهنماییتون
کدی که گفتی را نوشتم پیام خطا داد گفت DataLayer را نمی شناسه
لطفا راهنماییم کنید

ali_mnkt
پنج شنبه 05 فروردین 1389, 21:53 عصر
سلام دوست عزیز
ممنون از راهنماییتون
کدی که گفتی را نوشتم پیام خطا داد گفت DataLayer را نمی شناسه
لطفا راهنماییم کنید


من از سه لایه نویسی استفاده کردم شما می تونی به جای اون خط از دستور delete معمولی

استفاده کنی

rahil_2008
پنج شنبه 05 فروردین 1389, 23:19 عصر
با یه همچین پیام خطایی مواجه شدم:


Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.


شما می دونید چی می گه؟

ali_mnkt
جمعه 06 فروردین 1389, 01:48 صبح
pagevalidation رو true کن

rahil_2008
جمعه 06 فروردین 1389, 02:20 صبح
پیام خطاش برطرف شد اما حالا که اجرا می کنم هیچ ردیفی را پاک نمی کنه
وقتی trace کردم دیدم اشکال از این خط

CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("checkbox1");

هست چون شرطی if رو چک می کنه و رد می شه اصلا واردش نمی شه

mehdi.mousavi
جمعه 06 فروردین 1389, 02:25 صبح
با یه همچین پیام خطایی مواجه شدم:
شما می دونید چی می گه؟

سلام.
من قبلا در مورد این خطا بطور مفصل اینجا (http://barnamenevis.org/forum/showthread.php?t=208871) توضیح داده ام.

موفق باشید.