asp.net gridview:如何在一列中有多个按钮字段?

时间:2011-02-25 16:53:23

标签: asp.net gridview webforms

我需要为gridview创建多个操作 - 例如,“Approve”,“Deny”和“Return”。

我可以通过为每个操作创建一个按钮字段来完成此操作:

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

但是,这会为每个按钮创建一列。

有没有办法拥有相同的功能,但是将它们合并为一个列?

3 个答案:

答案 0 :(得分:9)

您是否考虑过使用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完全相同的方式捕获命令,或者执行任何您喜欢的操作。您可以完全控制它以满足您的需要,而不受使用常规预定义列类型的内置功能的约束。

答案 1 :(得分: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 :(得分:3)

解决方案不是使用ButtonField元素。

要完成您想要的操作,您需要创建一个列TemplateField,并在<asp:Button id="myButton" />的{​​{1}}或TemplateField内将按钮定义为常规ASP.NET ItemTemplate {1}}适用于您的用户界面。

您可以在EditItemTemplate处理程序中处理Click事件,您可以在其中检查GridView_OnItemCommand()以确切了解导致事件的按钮。

相关问题