C# asp.net C中子gridview引发异常的行删除事件#
我找了很多,但找不到解决问题的办法 使用C#.Net、Asp.Net 3.5,我在主子关系中有两个gridview控件,如下所示:C# asp.net C中子gridview引发异常的行删除事件#,c#,asp.net,C#,Asp.net,我找了很多,但找不到解决问题的办法 使用C#.Net、Asp.Net 3.5,我在主子关系中有两个gridview控件,如下所示: <asp:GridView ID="gridViewExistingSchedules" runat="server" DataKeyNames="SchedulerId" AutoGenerateColumns=
<asp:GridView ID="gridViewExistingSchedules"
runat="server" DataKeyNames="SchedulerId"
AutoGenerateColumns="false"
OnRowDataBound="gridViewExistingSchedules_RowDataBound"
OnRowCommand="gridViewExistingSchedules_RowCommand"
OnRowDeleting="gridViewExistingSchedules_RowDeleting">
<Columns>
<asp:TemplateField ItemStyle-Width="20px">
<ItemTemplate>
<asp:GridView
ID="gridViewSchedulerDetails"
runat="server"
AutoGenerateColumns="false"
DataKeyNames="SchedulerId">
<Columns>
<asp:BoundField DataField="DetailId" Visible="false" />
<asp:BoundField DataField="Survey" HeaderText="Survey" />
<asp:BoundField DataField="TimeDescription" HeaderText="Time" />
<asp:BoundField DataField="FromDate" HeaderText="From Date" />
<asp:BoundField DataField="ToDate" HeaderText="To Date" />
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgDelete" CommandArgument='<%# Bind("SchedulerId")%>' CommandName="Delete"
runat="server" ImageUrl="~/images/delete1.png" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgEdit" CommandArgument='<%# Bind("SchedulerId")%>' CommandName="Edit"
runat="server" ImageUrl="~/images/edit.png" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</ItemTemplate>
<ItemStyle Width="20px"></ItemStyle>
</asp:TemplateField>
<asp:BoundField DataField="Frequency" HeaderText="Frequency" />
<asp:BoundField DataField="DayOfWeek" HeaderText="Day Of Week" />
<asp:BoundField DataField="Time" HeaderText="Time" />
<asp:BoundField DataField="NextRunOn" HeaderText="Next Run On" />
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgDelete" CommandArgument='<%# Bind("SchedulerId")%>' CommandName="Delete"
runat="server" ImageUrl="~/images/delete.png" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
对于上述给定代码,存在运行时异常:
“GridView'gridViewSchedulerDetails'触发了未处理的事件行删除。”
首先,我认为由于处于父/子关系,主gridview需要处理子“gridViewSchedulerDetails”的row_命令事件,因此我将代码更改为:
void gvDetails_RowCommand(object sender, GridViewCommandEventArgs e)
{
}
void gvDetails_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
}
protected void gridViewExistingSchedules_RowCommand(object sender, GridViewCommandEventArgs e)
{
UIWriter writer = new UIWriter();
if (e.CommandName.Equals("Delete"))
{
int surveyDetailId = int.Parse(e.CommandArgument.ToString());
if (writer.RemoveSurvey(surveyDetailId))
{
this.labelUserNotification.Text = "Deleted successfully";
}
else
this.labelUserNotification.Text = "Due to some internal error, selected item cannot be deleted";
//bind existing scheduler
UICaller caller = new UICaller();
this.gridViewExistingSchedules.DataSource = caller.BindScheduler();
this.gridViewExistingSchedules.DataBind();
}
else if (e.CommandName.Equals("Edit"))
{
}
}
protected void gridViewExistingSchedules_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
}
但我仍然得到上面给出的相同错误。
请告知我如何处理子gridview行删除偶数以及此处实际发生的情况您已在aspx代码中指定了删除事件,而该事件处理程序不在.cs文件代码中,这就是它产生问题的原因。或者像下面这样编写一个事件处理程序
void gridViewExistingSchedules_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
}
如果您不需要,也可以从aspx代码中删除以下内容
OnRowDeleting="gridViewExistingSchedules_RowDeleting"
有几件事
如果指定OnRowCommand=“gridViewExistingSchedules\u RowCommand”
,则从技术上讲,这也会捕获delete命令。因此,您可以删除onrowdeleding=“gridViewExistingSchedules\u rowdeleding”
并使用打开命令名的开关捕捉它。(见此处)
撇开这一点,让我们继续讨论错误
GridView“gridViewSchedulerDetails”触发了未处理的事件行删除
您之所以收到此消息,是因为在未处理的gridviewgridViewSchedulerDetails
上调用了delete方法。你有两个选择来摆脱它
gridViewSchedulerDetails
)添加一个onrowdeleding
方法并处理该方法gridViewSchedulerDetails
)添加一个OnRowCommand
方法并处理该方法您的图像按钮包含命令名
delete
和edit
。。。这些是为事件保留的,分别用于删除、编辑和激发它们。当您在数据绑定中分配不同的事件时,这可能会导致冲突。尝试将图像按钮上的CommandName
更改为子网格视图中的del
和ed
,看看是否有帮助。可以粘贴代码吗。从您粘贴的代码中可以看出,cs文件中缺少gridViewExistingSchedules\u行删除事件,而您的aspx文件中缺少gridViewExistingSchedules\u行删除事件。您仍然收到此错误吗?为什么需要在GridViewExistingScheduleGrid上删除行从aspxYes中删除。若看到错误,则是关于GridViewScheduleDetails的,它是子网格。实际上我不需要它,但我把它放在那里是因为子gridview问题。我认为这类似于泡泡事件。我认为你的代码有问题。有这么多的名字,比如gvu,你用它来删除吗?你能把你的代码写出来然后问清楚吗?但是我把它添加到gridViewExistingSchedules\u RowDataBoundHMM中,我没有看到。出于兴趣,你这样做有什么原因吗?您是否尝试过直接在gridViewSchedulerDetails
上指定onrow命令
<代码>作废gridViewSchedulerDetails\u行删除(对象发送方,GridViewDeleteEventArgs e){}我尝试根据您的更新将名称更改为del和ed,但无效。然而,客户端要求更改UI,所以现在不是这样。但最初的问题仍然存在,为什么子gridview删除/编辑不能正常工作。
OnRowDeleting="gridViewExistingSchedules_RowDeleting"