如何使用asp.net将gridview的rownumber作为命令参数传递?

时间:2012-07-26 08:29:14

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

对于asp.net,我是初学者。我从昨天开始尝试找到问题的答案:如何使用asp.net将gridview的rownumber作为命令参数传递?

我尝试了很多方法/方法,但都没有用(命令代码在代码隐藏中是null),所以我认为尝试使用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());)。

提前谢谢你:)

2 个答案:

答案 0 :(得分:0)

您可以在这里找到有关GridView和OnRowCommand

的完整示例

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

答案 1 :(得分:0)

您可以在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
    }
}