【发布时间】:2009-09-13 11:03:58
【问题描述】:
我想要做的就是在gridview 的标题中放置一个asp:button。 假设您有一个包含 3 列的网格视图 - id、name、family。所以,而不是标题 [id, name, family] 我希望它是 [id, name, asp:button] - 所以按钮当然会有它的动作。
谢谢, 罗马。
【问题讨论】:
我想要做的就是在gridview 的标题中放置一个asp:button。 假设您有一个包含 3 列的网格视图 - id、name、family。所以,而不是标题 [id, name, family] 我希望它是 [id, name, asp:button] - 所以按钮当然会有它的动作。
谢谢, 罗马。
【问题讨论】:
您需要采取的方法是使所需的 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 使用的模板字段技术的基础知识 - link text
希望对您有所帮助。
【讨论】:
这些实际上是链接按钮。 您可以使用 css 为它们提供真实按钮的外观和感觉。
然而,它并不优雅,而设计趋势实际上是使用链接而不是按钮(看看你喜欢的任何流行的网络应用程序,包括这个)
【讨论】: