【发布时间】:2009-09-25 16:02:51
【问题描述】:
使用 asp.net,c# 3.5,vs 2008。
我有一个名为 gv1 的 aspx gridview,它带有一个有效的 c# 代码隐藏 onrowcommand 方法,当单击该行上的按钮时调用该方法。
gridview上的按钮是动态生成的。
我正在尝试用 javascript 函数替换该代码隐藏调用,以避免往返服务器。
我该怎么做?
到目前为止我已经尝试过
-
当我在 foreach 循环中动态生成按钮时,在后面的代码中添加一个行属性,这不起作用:
r.Attributes.Add("OnRowCommand", "javascript:gv1RowCommand(ID);");
-
以下在运行前会报错:没有重载的方法需要 1 个参数
<asp:GridView ID="gv1" runat="server" onrowcommand="gv1RowCommand(ID)" ... 各种其他的东西,比如事件
onchange , onselected
我使用以下 javascript 只是为了看看是否可以调用它:
function gv1RowCommand(ID) {
alert(
"row command");
}
【问题讨论】:
-
我建议在加载 DOM 后注入 javascript,这样,如果脚本被禁用,您仍然可以使用回发来处理偶数服务器端。
-
我可以使用 protected void gv1_RowCommand(object sender, GridViewCommandEventArgs e) { GridViewRow row = (GridViewRow)(((Button)e.CommandSource).NamingContainer) 处理事件服务器端;等等...我试图避免回发。
-
您不了解页面生命周期。 RowCommand 不是客户端事件。
-
感谢您为我解决这个问题。所以这就是我的问题。我正在寻找与 RowCommand 等效的客户端,例如 ondblclick。这是否可行:在 gridview 中动态生成一个 html 按钮而不是一个 aspnet 按钮,并在 onClick 事件中使用 parentElement.parentElement 来获取行?
标签: c# asp.net javascript gridview rowcommand