1

我有一个基本GridView的,CommandField它使用 CommandField 的内置编辑、取消、更新和删除按钮,ButtonType属性设置为“图像”(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 时,ImageButtonsinCommandField被呈现为以下(简化的)<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 是否处于编辑模式。

那么,为什么渲染的 Update 按钮不使用 ASP.NET 的 __doPostBack JavaScript 函数,而 Delete、Edit 和 Cancel 按钮使用呢?

OnRowUpdating事件如何处理的?

注意:当使用默认值ButtonType时,CommandField渲染 __doPostBack,但在使用ButtonType="Image"__doPostBack时包括在内。

4

1 回答 1

0

请注意,这 4 个按钮永远不会一起显示,您要么有“编辑”“删除”,要么单击“编辑”后,您会得到“更新”“取消”。

因此,就像您单击“编辑”按钮并且按钮集从“编辑”“删除”更改为“更新”“取消”一样,您的“更新”按钮将__doPostback附加到它。

然后在您单击“编辑”按钮后OnRowUpdating正常处理。doPostback

你可以下载我的一个例子

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

看到那个。只需将按钮类型更改为ImageinDefault.aspx并将您的处理程序附加到网格。

于 2013-01-18T10:52:05.100 回答