javascript - 当呈现为 HTML 时,为什么没有 __doPostBack() JavaScript 添加到 GridView 中 CommandField 的更新按钮

标签 javascript asp.net gridview commandfield

我有一个基本的GridViewCommandField它使用 CommandField 的内置编辑、取消、更新和删除按钮,以及 ButtonType属性设置为“Image”(ImageButtons),定义为:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false"
OnRowEditing="gv_RowEditing" OnRowCancelingEdit="gv_RowCancelingEdit" OnRowUpdating="gv_RowUpdating" OnRowDeleting="gv_RowDeleting">
<Columns>
    <asp:CommandField 
        ShowEditButton="true" ShowDeleteButton="true" ButtonType="Image"
        EditImageUrl="~\Images\Icons\gridView_Edit.png"
        CancelImageUrl="~\Images\Icons\gridView_CancelEdit.png"
        UpdateImageUrl="~\Images\Icons\gridView_Update.png"/>
</Columns>

OnRowEditing、OnRowCancelingEdit、OnRowUpdating 和 OnRowDeleting 事件的服务器端 C# 事件处理程序工作正常,定义如下:

protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e) { }
protected void gv_RowEditing(object sender, GridViewEditEventArgs e) { }
protected void gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { }
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e) { }

当页面呈现为 HTML 时,ImageButtonsCommandField呈现为以下(简化)<input>标签:

<input type="image" name="ctl00$Body$gv$ctl02$ctl00" src="Images/update.png" alt="Update" style="border-width:0px;">
<input type="image" src="Images/delete.png" alt="Delete" onclick="javascript:__doPostBack('ctl00$Body$gv','Delete$0')" style="border-width:0px;">
<input type="image" src="Images/edit.png" alt="Edit" onclick="javascript:__doPostBack('ctl00$Body$gv','Edit$0')" style="border-width:0px;">
<input type="image" src="Images/cancel.png" alt="Cancel" onclick="javascript:__doPostBack('ctl00$Body$gv','Cancel$0')" style="border-width:0px;">

注意:实际上,任何时候仅呈现“编辑/删除”或“更新/取消”,具体取决于 GridView 是否处于编辑模式。

那么,为什么呈现的“更新”按钮不使用 ASP.NET 的 __doPostBack JavaScript 函数,而“删除”、“编辑”和“取消”按钮则使用呢?

OnRowUpdating怎么了?事件被处理了吗?

注意:使用默认 ButtonType 时对于CommandField确实渲染__doPostBack,但是当使用ButtonType="Image"包含 __doPostBack。

最佳答案

请注意,这 4 个按钮永远不会一起显示,您可以选择“编辑”“删除”,或者在单击“编辑”后获得“更新”“取消”。

因此,当您单击“编辑”按钮并且按钮组从“编辑”“删除”更改为“更新”“取消”时,您的“更新”按钮将具有 __doPostback附在其上。

单击“编辑”按钮后,doPostback 会正常处理 OnRowUpdating

您可以下载我的示例之一

http://www.ii.uni.wroc.pl/~wzychla/ra2829/example3a.zip

看到这一点。只需将 Default.aspx 中的按钮类型更改为 Image 并将处理程序附加到网格即可。

关于javascript - 当呈现为 HTML 时,为什么没有 __doPostBack() JavaScript 添加到 GridView 中 CommandField 的更新按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14397014/

相关文章:

javascript - 来自 MongoDB 的错误消息 "Operation ` disneys.insertOne( )` buffering timed out after 10000ms""

javascript - 我如何在不破坏导航栏上的长值的情况下调整浏览器的大小?

c# - 在什么场景下我们需要创建一个新的线程?

c# - 将所有文件从源文件夹复制到目标文件夹重命名所有文件,同时在 asp.net c# 中处理

gridview - Yii2 Gridview 添加另一个标题

java - android 在 GridView 更新之间等待

javascript - 停止 javascript/jquery 中的函数执行

javascript - 无法访问从构造函数创建的对象

c# - Html 到 pdf 缺少一些字符 (itextsharp)

Android 图像在 recyclerview 中闪烁