如何在ASP.NET GridView的标题中放置一个按钮?

7
我想做的是在一个gridview的头部放置一个asp:button。 假设你有一个包含3列(id、name、family)的gridview。所以,我希望它的头部不再是[id、name、family],而是[id、name、asp:button]——这样按钮当然会有它的操作。
谢谢, Roman.
2个回答

12

您需要采用的方法是将所需的 GridView 列设置为模板列。当您使用模板列时,您可以将任何 asp.net 控件放入 gridview 控件的每个主要部分(标题、项、页脚等)。我没有测试过,但原则上看起来是这样的:

        <asp:GridView ID="Gridview1" runat="server">
        <Columns>
            <asp:BoundField DataField="yourDbColumnName" HeaderText="id" />
            <asp:BoundField DataField="yourDbColumnName" HeaderText="name" />
            <asp:TemplateField>
                <HeaderTemplate>
                    <asp:Button runat="server" ID="btnFamily" CommandName="FamilyClicked" />
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:Literal runat="server" ID="litFamily" Text='<%# EVAL("YourDbColumnValue") %>'></asp:Literal>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

要"捕获"按钮的点击事件并对其进行操作,您需要利用GridView的RowCommand事件(这是一个起点-仍未经过测试):

    Protected Sub Gridview1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles Gridview1.RowCommand
    If e.CommandName = "FamilyClicked" Then
        ' they clicked by grid view header's asp:button control...
        Response.Write("TEST")
    End If
End Sub
这里的魔法在于给按钮的CommandName属性赋值(在这种情况下,我将其设置为"FamilyClicked",但可以任意设置)。
这是关于GridView使用的模板字段技术的更多基础知识 - 链接文本 希望这能有所帮助。

0

这些实际上是LinkButtons。 您可以使用CSS来赋予它们真正按钮的外观和感觉。

然而,这样做可能不太优雅,因为设计趋势实际上是使用链接而不是按钮(看看您喜欢的任何流行Web应用程序,包括此应用程序)。


我想我没有表达清楚 - 我不希望它具有与已经存在的LinkButtons相同的操作 - 我想要放置一个具有不同操作(如转到另一页)的按钮。谢谢。 - Roman
如果您只想插入<input type="button">,那么它甚至更简单。 使用jQuery(或任何其他js库)在一行代码中完成它。 - Tzury Bar Yochay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接