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 标题过滤器

ASP.NET 网格视图与列表视图

ASP.NET 中 GridView 中的内部网格线

asp.net webforms ajax 更新gridview

Gridview 中的 Select2 插件仅适用于 asp.net 中的最后一行网格