2011-02-25 58 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以确定哪个按钮导致该事件。

相关问题