我想做的是在一个gridview的头部放置一个asp:button。
假设你有一个包含3列(id、name、family)的gridview。所以,我希望它的头部不再是[id、name、family],而是[id、name、asp:button]——这样按钮当然会有它的操作。
谢谢, Roman.
谢谢, Roman.
您需要采用的方法是将所需的 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",但可以任意设置)。这些实际上是LinkButtons。 您可以使用CSS来赋予它们真正按钮的外观和感觉。
然而,这样做可能不太优雅,因为设计趋势实际上是使用链接而不是按钮(看看您喜欢的任何流行Web应用程序,包括此应用程序)。