0

使用 asp.net、c# 3.5 与 2008。

我有一个名为 gv1 的 aspx gridview,它带有一个有效的 c# 代码隐藏onrowcommand方法,当单击该行上的按钮时调用该方法。

gridview 上的按钮是动态生成的。

我正在尝试用 javascript 函数替换该代码隐藏调用,以避免往返服务器。

我该怎么做呢?

到目前为止我已经尝试过

  1. 当我在 foreach 循环中动态生成按钮时,在后面的代码中添加一个行属性,这不起作用:

    r.Attributes.Add("OnRowCommand", "javascript:gv1RowCommand(ID);");

  2. 以下在运行前给出错误:没有重载的方法需要 1 个参数

    <asp:GridView ID="gv1" runat="server" onrowcommand="gv1RowCommand(ID)" ...
    
  3. 各种其他事物,例如事件onchange , onselected

我正在使用以下 javascript 来查看是否可以调用它:

function gv1RowCommand(ID) { 
alert(
"row command"); 
}
4

2 回答 2

2

您需要先创建按钮的对象,然后为其添加属性。检查下面的代码 -

foreach (GridViewRow row in gv1.Rows)
 {
    //Creates object of button inside your gridView Row
    Button btnRowCommand = (Button)row.FindControl("YourButtonName");
    //Adds Attribute to button- in this case adds onclick attribute 
    //which will fire the 
    //gv1RowCommand(ID); javascript function
    btnRowCommand.Attributes.Add("onclick", "gv1RowCommand('"+ ID +"');"); 
 }

代替

// dont use this code  
 r.Attributes.Add("OnRowCommand", "javascript:gv1RowCommand(ID);");  
// dont use this code

当用户单击 gridview 内的按钮时,这将导致您的 javascript 函数gv1RowCommand(ID)触发。如果您需要更多关于在 gridView 中使用 javascript 的信息,您可以邮寄或回复。如果上面的代码片段对您来说还不够,您可以发布更多代码清单,并相应地发布正确的代码。

于 2009-09-25T17:35:20.097 回答
0

您可以摆弄的 Javascript 事件:

Javascript 事件

您无权访问 Javascript 中的任何页面方法或属性。除非您使用 Ajax,否则您无法访问任何持久性内容...因此,您在 RowCommand 中所做的事情并不多,您可以有效地移植到客户端 javascript 层。

于 2009-09-25T17:12:38.080 回答