ASP.NET Gridview 与动态网格上的链接按钮列
Posted
技术标签:
【中文标题】ASP.NET Gridview 与动态网格上的链接按钮列【英文标题】:ASP.NET Gridview with Link button column on Dynamic Grid 【发布时间】:2012-12-20 23:06:55 【问题描述】:动态网格上带有链接按钮列的 ASP.NET Gridview
ASP.NET Gridview 应该有一个链接的列 - 第一列,单击时应该转到具有单击单元格值的另一个页面。网格是动态的,即列不是固定的,列/列本身不是动态的。我只为第一列添加了一个 asp 控件,其余列是动态的,在后面的代码中,我总是添加第一列“链接按钮”。
<Columns>
<asp:TemplateField HeaderText="linkbutton">
<ItemTemplate>
<asp:LinkButton ID="linkbutton" runat="server" Text='<%#EVal("linkbutton") %>'
CommandName="ShowDetails" CommandArgument='<%#Eval("linkbutton") %>'>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
linkbutton 是数据表的一部分,因此当我将数据表绑定到 gridview 时,它会出现两次,一次用于模板字段,一次来自数据表绑定。 gridview.column().visible=false 不起作用,因为它将链接按钮视为唯一列而不是数据表列。
我尝试从后面的代码中添加 Linkbutton 控件,但也没有用。
【问题讨论】:
您是否在 GridView 上将 autogeneratecolumns 设置为 true? 是..自动生成的列设置为 true 你会在后面展示你的代码吗?如果 gridview 是动态的,为什么会有自动生成的列? 后面的代码很简单,获取数据表并绑定。数据表 dt = 新数据表(); dt = ProductDB.GetProductList("1"); GridView1.DataSource = dt; GridView1.DataBind(); 【参考方案1】:我会将 autogeneratecolumns 设置为 false,然后使用 asp:BoundFields 来显示数据表中的列,而不是使用 asp:TemplateField 处理的链接按钮。
然后您可以使用 GridView.Columns().Visible 隐藏/显示不同的列。
您无法将 GridView.Columns().Visible 用于自动生成的列,因为they are not added to Columns():
显式声明的列字段可以与 自动生成的列字段。当两者都使用时,显式 声明的列字段首先呈现,然后是 自动生成的列字段。自动生成的列 字段不会添加到 Columns 集合中。
【讨论】:
假设我得到了 100 列和 50 列只显示,其中 50 列是未知的,但第 1 列总是相同的,即链接按钮。 你总是有 100 列吗?将显示的 50 列将如何确定? 50 列由用户偏好决定以上是关于ASP.NET Gridview 与动态网格上的链接按钮列的主要内容,如果未能解决你的问题,请参考以下文章
ASP.Net、JavaScript 中 GridView 上的线条
基于 ASP.NET DataTable 的 GridView 标题过滤器