2010-01-28 54 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; 
      ... 
     } 
    } 
}