Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
隐藏数据网格的列(asp.net/c#)_C#_Asp.net_Datagrid_Visible - Fatal编程技术网

隐藏数据网格的列(asp.net/c#)

隐藏数据网格的列(asp.net/c#),c#,asp.net,datagrid,visible,C#,Asp.net,Datagrid,Visible,嘿,我正在努力使我的datagrid可打印。为此,我试图隐藏最后4列。我有一个可打印的按钮,我想点击时,使最后4列消失。到目前为止,我还没有做到这一点 我试过: ProductsGrid.Columns[6].ControlStyle.Width = -1; 及 注意:这些列中确实包含数据。也许这是我的问题的一部分。另外,我需要列的标题消失 谢谢你的提示 编辑:我正在使它们在我的按钮单击命令中不可见。我没有使用生成的列,所以我认为它设置为false。我对这个问题有点厌倦了,于是离开了工作,要

嘿,我正在努力使我的datagrid可打印。为此,我试图隐藏最后4列。我有一个可打印的按钮,我想点击时,使最后4列消失。到目前为止,我还没有做到这一点

我试过:

 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