Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net C中子gridview引发异常的行删除事件#_C#_Asp.net - Fatal编程技术网

C# asp.net C中子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=

我找了很多,但找不到解决问题的办法

使用C#.Net、Asp.Net 3.5,我在主子关系中有两个gridview控件,如下所示:

<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”触发了未处理的事件行删除

您之所以收到此消息,是因为在未处理的gridview
gridViewSchedulerDetails
上调用了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"