2012-12-20 18 views
1

ASP.NET的GridView链接按钮栏上动态网格链接按钮栏ASP.NET的GridView与动态电网

的ASP.NET的GridView应该有一个链接栏 - 第一栏,点击后应该采取到另一个网页与单击的单元格值。网格是动态的,即列不固定,列/列本身不动。我为第一列添加了一个asp控件,其余的列是动态的,在后面的代码中,我总是添加第一列“linkbutton”。

<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> 

LinkBut​​ton的是数据表的一部分,所以当我将DataTable绑定到GRIDVIEW它出现了两次,一次用于模板列和一旦从数据表的绑定。 gridview.column()。visible = false没有工作,因为它认为linkbutton是唯一的列而不是数据表列。

我试图从代码后面添加Linkbutton控件也没有工作。

+0

您是否在GridView上将autogeneratecolumns设置为true? –

+0

是的。自动生成的列设置为true –

+0

你会在后面显示你的代码吗?如果gridview是动态的,为什么你有自动生成的列? – briskovich

回答

1

我会将autogeneratecolumns设置为false,然后使用asp:BoundFields为了显示数据表中的列,而不是linkbutton,您使用asp:TemplateField进行处理。

然后,您可以使用GridView.Columns()。可见隐藏/显示不同的列。

显式声明的列字段可以组合使用 自动生成的列字段:

与自动生成的列,因为they are not added to Columns()您无法使用GridView.Columns()可见。当两者都使用时,首先显式声明 声明的列字段,然后是 自动生成的列字段。自动生成的列 字段不会添加到Columns集合中。

+0

假设我有100列和50列仅显示,哪50列是未知的,但列1始终是相同的,这是linkbutton。 –

+0

你会一直有100列吗?将显示50列将如何确定? –

+0

50列由用户首选项确定 –