隐藏数据网格的列(asp.net/c#)
嘿,我正在努力使我的datagrid可打印。为此,我试图隐藏最后4列。我有一个可打印的按钮,我想点击时,使最后4列消失。到目前为止,我还没有做到这一点 我试过:隐藏数据网格的列(asp.net/c#),c#,asp.net,datagrid,visible,C#,Asp.net,Datagrid,Visible,嘿,我正在努力使我的datagrid可打印。为此,我试图隐藏最后4列。我有一个可打印的按钮,我想点击时,使最后4列消失。到目前为止,我还没有做到这一点 我试过: ProductsGrid.Columns[6].ControlStyle.Width = -1; 及 注意:这些列中确实包含数据。也许这是我的问题的一部分。另外,我需要列的标题消失 谢谢你的提示 编辑:我正在使它们在我的按钮单击命令中不可见。我没有使用生成的列,所以我认为它设置为false。我对这个问题有点厌倦了,于是离开了工作,要
ProductsGrid.Columns[6].ControlStyle.Width = -1;
及
注意:这些列中确实包含数据。也许这是我的问题的一部分。另外,我需要列的标题消失
谢谢你的提示
编辑:我正在使它们在我的按钮单击命令中不可见。我没有使用生成的列,所以我认为它设置为false。我对这个问题有点厌倦了,于是离开了工作,要到下周中旬才能回来,所以我可能不得不推迟到那时才能找到解决方案。谢谢大家的评论,我很快会看的。抱歉,我无法及时提供更多反馈
编辑x2:我必须在某种回发或其他方式中处理它吗?如果您有AutoGenerateColumns=“True”,那么通过简单地设置visible=False使它们不可见是不起作用的,因为 VB.Net,但我想你明白了:
Private Sub setPrinterView()
For Each tr As TableRow In DirectCast(Me.GridView1.Controls(0), Table).Rows
For i As Int32 = 1 To 4
If tr.Cells.Count - i < 0 Then Exit For
tr.Cells(tr.Cells.Count - i).Visible = False
Next
Next
End Sub
Private子集合printerview()
对于DirectCast中的每个tr As表格行(Me.GridView1.Controls(0),Table)。行
对于i作为Int32=1到4
如果tr.Cells.Count-i<0,则退出
tr.Cells(tr.Cells.Count-i).可见=假
下一个
下一个
端接头
如果AutogenerateColumns设置为False,则只需使列不可见,而无需重新绑定网格。ProductsGrid.Columns[6]。Visible=False;他应该在工作。我不是100%确定,但我认为您必须再次调用DataBind()来更新它。除非重新绑定数据,否则不会在页面上更新控件。(我将此设置为注释,而不是answr,而不是答案,因为我不是100%确定,也不是在我的开发PC上进行测试。)您在何时何地隐藏列?使它们不可见应该有效(无需重新绑定)。是否自动生成列?如果失败,只需通过复制和粘贴代码生成第二个打印页面,然后从标记中的打印页面中删除列,并使用“打印友好版本”链接链接到该页面,应该不会太困难。或者您可以将表格的标题和单元格设置为一个名为“noprint”的css类,并有一个用于显示的css和一个用于打印的css,在第二个css中将visible设置为false…是的,我同意Tim的看法。你真的不需要重新绑定,你正在使用的代码应该可以工作。关于AutoGenerateColumns属性的好想法。。。
Private Sub setPrinterView()
For Each tr As TableRow In DirectCast(Me.GridView1.Controls(0), Table).Rows
For i As Int32 = 1 To 4
If tr.Cells.Count - i < 0 Then Exit For
tr.Cells(tr.Cells.Count - i).Visible = False
Next
Next
End Sub