2011-02-25 31 views
6

我需要爲gridview創建多個動作 - 比如說「批准」,「拒絕」和「返回」。asp.net gridview:我如何在一列中有多重按鈕字段?

我可以爲每個操作創建一個按鈕域做到這一點:

<asp:ButtonField ButtonType="Link" CommandName="Approve" Text="Approve" /> 
<asp:ButtonField ButtonType="Link" CommandName="Deny" Text="Deny /> 
<asp:ButtonField ButtonType="Link" CommandName="Return" Text="Deny" /> 

然而,這會爲每個按鈕一列。

有沒有一種方法可以具有相同的功能,但將它們合併爲一個列?

回答

8

您是否考慮使用TemplateField?這裏有一個例子:

<asp:GridView ID="grdTest" runat="server"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="btnApprove" runat="server" CommandName="Approve" Text="Approve" /> 
       <asp:LinkButton ID="btnDeny" runat="server" CommandName="Deny" Text="Deny" /> 
       <asp:LinkButton ID="btnReturn" runat="server" CommandName="Return" Text="Return" /> 
      </ItemTemplate>     
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

然後,您可以使用OnRowCommand捕捉命令完全相同的方式或做任何你喜歡的。您可以完全控制它的行爲方式,而不受使用常規預定義列類型的內置功能的限制。

+0

+1因爲它是接受的答案 – Alex 2011-02-26 11:37:34

3

儘量把按鈕到<asp:TemplateField>,而不是:

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton CommandName="Approve" Text="Approve" /> 
     <asp:LinkButton CommandName="Deny" Text="Deny /> 
     <asp:LinkButton CommandName="Return" Text="Deny" /> 
    </ItemTemplate> 
</asp:TemplateField> 
2

解決的辦法是不使用ButtonField字段元素。

要做到你想你需要創建一個列作爲TemplateField和內TemplateFieldItemTemplateEditItemTemplate適合您的UI定義按鈕作爲普通ASP.NET <asp:Button id="myButton" />什麼。

您可以在GridView_OnItemCommand()處理程序中處理Click事件,您可以在其中檢查e.CommandName以確定哪個按鈕導致該事件。

相關問題