2010-11-05 64 views
0

嘿,我想让我的数据网格可打印。要做到这一点,我试图隐藏最后4列。我点击了一个可打印的按钮,让最后4列消失。到目前为止,我还没有做好这项工作。隐藏数据网格的列(asp.net/c#)

我曾尝试:

ProductsGrid.Columns[6].ControlStyle.Width = -1; 

ProductsGrid.Columns[6].Visible = false; 

注:这些列做在他们的数据。也许这是我的问题的一部分。另外,我需要列的标题消失。

感谢您的任何提示。

编辑:我让他们在我的按钮单击命令不可见。我没有使用生成的列,所以我认为它设置为false。我有点厌倦了这个问题并且离开了工作,直到下周中旬才会回来,所以我可能不得不暂时找到解决方案。感谢大家的评论,我会尽快查看。对不起,我无法及时提供更多反馈。

编辑x2:我必须在某种回传或其他方式中处理它吗?

+0

ProductsGrid.Columns [6] .Visible = false;应该工作。我不是100%肯定的,但我认为你必须再次调用DataBind()来更新它。除非您重新绑定数据,否则控件不会在页面上更新。 (我将它设置为评论而不是答案而不是答案,因为我不是100%确定的,而不是在我的Dev PC上进行测试。) – David 2010-11-05 22:55:02

+1

何时何地隐藏您的列?让它们隐形应该可以工作(不需要重新绑定)。你是否自动生成列? – 2010-11-05 23:01:27

+0

如果失败了,通过复制和粘贴代码生成第二个页面进行打印应该不会太困难,然后从标记中的打印页面中删除列并使用“易于打印的版本”链接到它链接。或者你可以设置表头的单元格到一个名为“noprint”的css类,并有一个css用于显示,另一个用于打印,在第二个css中设置为false ... – David 2010-11-05 23:04:02

回答

2

如果您有AutoGenerateColumns =“True”,那么只需设置visible = False就无法使它们看不见,因为automatically generated bound column fields are not added to the Columns collection

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 

如果的AutoGenerateColumns设置为False,你只需要进行列无形无重新绑定网格。