2010-01-28 56 views
2

将命令和身份标识(int)传递回ASP.NET后面的代码的正确方法是什么?我正在查看CommandName和CommandArgument。我读错了,但我认为CommandArgument传回显示索引。这有什么帮助?GridView ASP.NET - 将命令和ID传递给代码隐藏

无法弄清楚如何将CommandArugment设置为我需要的ID。

回答

4

设置的CommandName并在GridView CommandArgument领域,那么你可以在代码中访问这些值后面。

所以假设你在每一行都有一个图像按钮,并且当用户选择你想要访问该行的命令名和参数的按钮时。

<asp:GridView ID="gvwRecords" runat="server" DataKeyNames="ID" DataSourceID="objRecords" OnRowCommand="gvwRecords_RowCommand"> 
    <Columns> 
    <asp:TemplateField HeaderImageUrl="~/Images/Approve_Header_Dark.gif"> 
     <ItemTemplate> 
     <asp:ImageButton runat="server" ID="btnApprove" %>' 
      CausesValidation="false" AlternateText="Approve record" ImageUrl="~/Images/Unapproved.gif" 
      CommandName="Approve" CommandArgument='<%# Eval("ID") %>' /> 
    </ItemTemplate> 
    </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

在后面的代码:

protected void gvwRecords_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    int recordID = int.Parse(e.CommandArgument.ToString()); 
    if (recordID > 0) 
    { 
     switch (e.CommandName.ToLower()) 
     { 
      case "sort": 
      break; 
      case "approve": 
      Record.ApproveRecord(recordID); 
      gvwRecords.DataBind(); 
      break; 
      ... 
     } 
    } 
}