C# 在RowDataBound中设置OnClientClick后未触发事件
我有一个Asp.net GridView(使用数据绑定填充)。 我的一个专栏是ButtonField(显然有他自己的CommandName) GridView_row命令工作得很好,但是如果我添加了GridView_RowDataBound(在其中我只添加了一个javascript确认),则在回发中不会触发GridView_row命令事件 问题/解决方案是什么 添加代码以更好地理解: Aspx代码:C# 在RowDataBound中设置OnClientClick后未触发事件,c#,asp.net,C#,Asp.net,我有一个Asp.net GridView(使用数据绑定填充)。 我的一个专栏是ButtonField(显然有他自己的CommandName) GridView_row命令工作得很好,但是如果我添加了GridView_RowDataBound(在其中我只添加了一个javascript确认),则在回发中不会触发GridView_row命令事件 问题/解决方案是什么 添加代码以更好地理解: Aspx代码: <asp:GridView ID="GridView1" runat="server"
<asp:GridView ID="GridView1" runat="server"
OnRowCommand="GridView1_RowCommand"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="MyField1" HeaderText="MyField1" />
<asp:BoundField DataField="MyField2" HeaderText="MyField2" />
<asp:ButtonField Text="MyAction" ButtonType="Image" ImageUrl="myaction.gif" CommandName="myaction" />
</Columns>
</asp:GridView>
编辑:
我忘了告诉我GridView在ajax选项卡容器(AjaxControlToolkit)中。乍一看,这似乎很好。您是否尝试过在TabContainer之外运行代码
这可能会让您走上正确的方向。这是图像按钮通常发出的信号:
<input type="image" src="myaction.gif" alt="MyAction" onclick="javascript:__doPostBack('GridView1','myaction$1')" style="border-width:0px;" />
应允许客户端click事件运行_doPostBack函数,并在用户单击OK时按预期在服务器端引发RowCommand事件
(作为旁注,这是ASP.NET WebForms缺点之一的一个很好的例子-生成了很多html,您无法控制.ASP.NET MVC FTW!)在
ClientScript.GetPostBackClientHyperlink
函数上使用sender作为参数,这样它将创建客户端js事件。下面是RowDataBound
中的示例,其中发送方是GridView
(VB)。
YourCommand
将作为要引发的RowCommand
事件的参数传递
e.Row.Cells(columnIndex).Attributes.Add("onclick", ClientScript.GetPostBackClientHyperlink(sender, "YourCommand$" & e.Row.DataItemIndex))
成功了!非常感谢。我仍然想知道为什么“javascript:return-confirm(\'Do-action?\”);不同于“if(!confirm('Do-action?){return-false;}”,顺便说一句,你是对的:ASP.NET MVC-FTW!我试着回答我自己。。如果我单击“否”,工作版本将返回false,但如果我单击“是”,工作版本将不会返回true。您已经找到了:)很高兴我能提供帮助。
<input type="image" src="myaction.gif" alt="MyAction" onclick="javascript:return confirm('Do action?');javascript:__doPostBack('GridView1','myaction$1')" style="border-width:0px;" />
(e.Row.Cells[e.Row.Cells.Count - 1].Controls[0] as ImageButton).OnClientClick = "if (!confirm('Do action?')) { return false; }";
e.Row.Cells(columnIndex).Attributes.Add("onclick", ClientScript.GetPostBackClientHyperlink(sender, "YourCommand$" & e.Row.DataItemIndex))