【问题标题】:How to pass the rownumber of a gridview as a commandargument using asp.net?如何使用 asp.net 将 gridview 的行号作为命令参数传递?
【发布时间】:2012-07-26 08:29:13
【问题描述】:

我是 asp.net 的初学者。从昨天开始,我一直在尝试寻找一个问题的答案:如何使用 asp.net 将 gridview 的行号作为命令参数传递?

我尝试了很多方法/方式,但都没有奏效(命令参数在代码隐藏中为空),所以我认为尝试使用 javascript 函数是合适的(如果有比使用 javascript 更短、更清晰的方法,请告诉我)。

功能如下:

     <script type = "text/javascript">
   function GetSelectedRow(lnk) {
       var row = lnk.parentNode.parentNode;
       var rowIndex = row.rowIndex - 1;
       alert("RowIndex: " + rowIndex);
       return rowIndex;
   }
</script>

还有:

    <ItemTemplate>
                <asp:Label ID="labelStatus" 
                           runat="server" 
                           Text='<%#Bind("Statut")%>'
                           CommandArgument='<%#"Eval(GetSelectedRow(lnk))"%>'>
                </asp:Label>
   </ItemTemplate>

我需要行号的原因是在 OnRowCommand 事件处理程序中,以便能够指定正在编辑的行。 ( myGridView.EditIndex = Convert.Int16(e.CommandArgument.ToString()); )。

提前谢谢你:)

【问题讨论】:

    标签: javascript asp.net edit row-number commandargument


    【解决方案1】:

    您可以在RowCreated 处理程序中的服务器端执行此操作:

    protected void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            // Find the control which fires the command
            LinkButton button = (LinkButton)e.Row.Cells[0].FindControl("LinkButton1");
    
            button.CommandArgument = e.Row.RowIndex.ToString();
        }
    }
    

    现在点击LinkButton1后会触发RowCommand事件,你可以在handler中访问这个CommandArgument

    protected void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
    {
        int rowIndex;
        if (int.TryParse(e.CommandArgument as string, out rowIndex))
        {
            // Do something with row index
        }
    }
    

    【讨论】:

    • 说得有道理,看起来很干净,但它仍然不起作用,因为 e.CommandArgument.ToString() 在我的情况下仍然为空(我不知道为什么)。无论如何,谢谢你们的好建议。
    • 你能显示你的网格标记(特别是事件订阅和触发命令事件的按钮)和代码吗?它可能有助于我们识别问题。
    • 再次感谢您,感谢您,我刚刚解决了我的问题。我照你说的做了,但由于我的一个小错误,它没有奏效。但现在它做到了! Multumesc :)
    【解决方案2】:

    您可以在此处找到有关 GridView 和 OnRowCommand 的完整示例

    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.onrowcommand.aspx

    【讨论】:

    • 谢谢。但是我看不到 asp 页面中 CommandArgument 的显式值属性在哪里。那是我真正的问题:) 我没有找到如何将行号传递给命令参数。
    猜你喜欢
    • 2020-03-18
    • 1970-01-01
    • 2021-10-10
    • 2018-04-29
    • 2021-11-14
    • 2013-03-10
    • 2013-07-15
    • 2013-04-14
    相关资源
    最近更新 更多