【问题标题】:ASP.NET Gridview with Link button column on Dynamic GridASP.NET Gridview 与动态网格上的链接按钮列
【发布时间】: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();

标签: c# asp.net vb.net gridview


【解决方案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 列由用户偏好决定
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
相关资源
最近更新 更多