Gridview RowUpdating事件未触发

Sea*_*ean 3 asp.net viewstate events gridview

我有一个Gridview AutoGenerateColumns="False".
我正在使用TemplateField在相应的ItemTemplate和EditItemTemplate字段中的GridView的第一列中显示我的编辑,更新和取消'按钮'.

在ItemTemplate中,我有一个ImageButtong,其CommandName为"Edit".这按预期工作,我可以在RowCommand事件处理程序中放置一个断点,以查看"事件"命令名称.单击后,回发将该行置于编辑模式.所有文本框都按原样显示.

此时,上面的EditItemTemplate会显示两个ImageButtons.一个有它CommandName = "Update",另一个有"取消".

我的问题在于更新ImageButton上的点击回发了,但是RowCommand和RowUpdating事件都没有被触发.

我在GridView标记中设置了必需的属性.(注意,在gridview中EnableViewState="False"- 如果我将其设置为True,我会得到标准

"无法加载viewstate.控制树......"等错误)

我注意到的一件奇怪的事情让我认为这是一个ViewState问题,如果我将Update按钮的CommandName更改为"Edit",那么回发事件会在RowCommand事件中被捕获...

欢迎任何建议.谢谢.

小智 7

如Asem和Ron所述,将CommandValidation ="false"属性添加到CommandField可以解决问题.原因是我在页面上有一些其他验证控件,在GridView更新页面上触发了其他验证控件,所以我认为最好设置一个ValidationSummary属性.


小智 5

我遇到过同样的情况,我的“编辑”按钮导致其他验证(尽管有隐藏的弹出窗口)在后台执行。

通过阅读解决方案,我一直在寻找CausesValidation="false"解决此问题的标准属性。我无法找到该字段,因为好像我在使用AutoGenerateEditButton="True"将编辑按钮添加到gridview一样。

我的解决方案如下,我希望这也可以帮助您节省一些宝贵的时间。

  1. 设置AutoGenerateEditButton="False"这种方式,您可以通过ASP代码添加此字段。

  2. 使用下面的代码将“编辑”按钮字段添加到您的gridView代码中,如下所示。

    <asp:commandfield showeditbutton="true" causesvalidation="false" headertext="Edit"/> 
    
    Run Code Online (Sandbox Code Playgroud)

如果验证是问题所在,您现在将可以看到更新的模块触发。