0

当谈到 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()); )。

先感谢您 :)

4

2 回答 2

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事件将被触发,您可以CommandArgument在以下位置访问它handler

protected void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    int rowIndex;
    if (int.TryParse(e.CommandArgument as string, out rowIndex))
    {
        // Do something with row index
    }
}
于 2012-07-26T08:49:28.220 回答
0

你在这里找到关于 GridView 和 OnRowCommand 的完整示例

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

于 2012-07-26T08:46:29.013 回答