给出以下 GridView 代码:
<asp:GridView ID="gvReq" runat="server" DataSourceID="objdsReq" >
<Columns>
<asp:TemplateField HeaderText="Control">
<ItemTemplate>
<asp:LinkButton ID="lbdelete" runat="server" CommandArgument='<%# Container.DataItemIndex %>' ForeColor="Red" CommandName="DeleteReq">Delete</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="objdsReq" runat="server" SelectMethod="GetDataTable" >
<%-- parameter list --%>
</asp:ObjectDataSource>
在RowDataBound事件中,添加JavaScript代码:
Protected Sub gvReq_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvReq.RowDataBound
If (e.Row.RowType = DataControlRowType.DataRow) Then
Dim lbdelete As LinkButton = e.Row.Cells(DELETE_CELL).Controls.Item(1)
lbdelete.Attributes.Add("onclick", "javascript:if(confirm('Are you sure you want to delete?')){return true}else{return false}")
JavaScript 会触发,但 RowCommand 事件永远不会触发 - 我猜测是因为它仅由 JavaScript 处理:
Protected Sub gvReq_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles gvReq.RowCommand
Dim dataItemIndex As Integer = Convert.ToInt32(e.CommandArgument)
Dim reqID As Integer = Convert.ToInt32(gvReq.DataKeys(dataItemIndex).Values(0))
If e.CommandName = "DeleteReq" Then
JavaScript 确认对话框是根据管理层的要求放置在那里的。
现在,如果有人在 JavaScript 确认框中单击“确定”,如何触发 RowCommand 事件处理程序?
最佳答案
能否使用 LinkButton
的 OnClientClick
属性,而不是在 rowdatabound
上添加该属性?
此外,您似乎还没有在 GridView 上实际设置 onrowcommand 属性。
例如:
<asp:GridView ID="gvReq" runat="server" DataSourceID="objdsReq" OnRowCommand="gvReq_RowCommand">
<Columns>
<asp:TemplateField HeaderText="Control">
<ItemTemplate>
<asp:LinkButton ID="lbdelete" runat="server"
CommandArgument='<%# Container.DataItemIndex %>'
ForeColor="Red"
CommandName="DeleteReq"
OnClientClick="return confirm('Are you sure you want to delete?');"
>Delete</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我相信 javascript 在链接按钮的回发中发挥着重要作用,因此在数据绑定(bind)行中添加 OnClick
可能会影响回发 javascript。
另请查看这篇文章,了解一种稍微“奇特”的方法,而不是使用默认的 javascript 确认: http://mattberseth.com/blog/2007/07/confirm_gridview_deletes_with.html
关于javascript - ASP.NET GridView ItemTemplate LinkButton 在 JavaScript 确认后支持 RowCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17537323/