ASP.NET GridView ItemTemplate LinkButton在JavaScript确认后对RowCommand的支持
给定以下GridView代码:ASP.NET GridView ItemTemplate LinkButton在JavaScript确认后对RowCommand的支持,javascript,asp.net,Javascript,Asp.net,给定以下GridView代码: <asp:GridView ID="gvReq" runat="server" DataSourceID="objdsReq" > <Columns> <asp:TemplateField HeaderText="Control"> <ItemTemplate> <asp:LinkButton ID="lbdelete" runat="server" CommandArg
<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>
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确认框中的
OK
,如何让RowCommand事件处理程序启动 尝试将按钮的命令名更改为“删除”
更新:
而不是
lbdelete.Attributes.Add("onclick", "javascript:if(confirm('Are you sure you want to delete?')){return true}else{return false}")
试一试
尝试将按钮的命令名更改为“删除” 更新: 而不是
lbdelete.Attributes.Add("onclick", "javascript:if(confirm('Are you sure you want to delete?')){return true}else{return false}")
试一试
您是否可以使用
link按钮的OnClientClick
属性,而不是在rowdatabound
上添加属性
此外,您似乎还没有在网格视图上实际设置onrowcommand属性
例如:
是否可以使用链接按钮的OnClientClick
属性,而不是在行数据绑定上添加属性
此外,您似乎还没有在网格视图上实际设置onrowcommand属性
例如:
如果有什么效果的话,这能实现什么?更改HTML中的CommandName
后,我需要更改RowCommand
事件处理程序的代码隐藏中的CommandName
字段。“数据绑定控件识别某些命令名,并自动引发和处理控件的相应事件。可以识别以下命令名。。。“这显然起到了作用,但现在我遇到了JAVScript错误Sys.WebForms.PageRequestManagerServerErrorException:除非指定了DeleteMethod,否则ObjectDataSource'objdsReq'不支持删除。在gridview的标记中,可以添加几个事件:OnRowCommand、OnRowDeleted、OnRowDeleted。”。此错误表示需要将删除事件附加到gridview。我更新了我的答案,也许这对你有帮助。把这个,;返回真后;并返回false;如果有的话,这能实现什么?更改HTML中的CommandName
后,我需要更改RowCommand
事件处理程序的代码隐藏中的CommandName
字段。“数据绑定控件识别某些命令名,并自动引发和处理控件的相应事件。可以识别以下命令名。。。“这显然起到了作用,但现在我遇到了JAVScript错误Sys.WebForms.PageRequestManagerServerErrorException:除非指定了DeleteMethod,否则ObjectDataSource'objdsReq'不支持删除。在gridview的标记中,可以添加几个事件:OnRowCommand、OnRowDeleted、OnRowDeleted。”。此错误表示需要将删除事件附加到gridview。我更新了我的答案,也许这对你有帮助。把这个,;返回真后;并返回false;我采用了更奇特的方法,但是我的RowCommand
方法仍然没有被触发。我的表格中的项目被删除;但由于我的方法从未激发,该项仍然存在于数据库中。也许值得指出的是,GridView中的行已被删除。它只是不在数据库上删除,因为它从不触发RowCommand
方法。看起来您没有连接row命令事件。请参阅修改后的答案。我已经将asp:LinkButton
替换为asp:Button
,因此我得到了我的功能。添加额外的行命令连接导致事件触发两次。因此,我认为这解决了我的问题。我采用了更奇特的方法,但我的RowCommand
方法仍然没有被激发。我的表格中的项目被删除;但由于我的方法从未激发,该项仍然存在于数据库中。也许值得指出的是,GridView中的行已被删除。它只是不在数据库上删除,因为它从不触发RowCommand
方法。看起来您没有连接row命令事件。请参阅修改后的答案。我已经将asp:LinkButton
替换为asp:Button
,因此我得到了我的功能。添加额外的行命令连接导致事件触发两次。所以,我认为这解决了我的问题。
lbdelete.OnClientClick = "javascript:if(confirm('Are you sure you want to delete?')){return true;}else{return false;}"
<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>