当前位置: 首页 > 面试题库 >

SSRS-动态隐藏列时,表格的宽度保持相同吗?

况野
2023-03-14
问题内容

你好。

我有一份SSRS 2005报告,其中显示了物价。对于某些客户,我在表中隐藏了一列(在“可见性-隐藏”属性上带有表达式)。

当我这样做时,我的桌子缩水了。我一直在努力寻找一种方法来动态调整此表的大小(或在设计时做一些事情以使其保持相同的宽度),但是我一直陷于困境。

简单地说“你不能做”的答案对我没有帮助。我已经读过:http :
//forums.asp.net/t/1354956.aspx

我希望SO社区的一些聪明人对我有用。谢谢!


问题答案:

我知道如何完成此操作的唯一方法是在运行时更改RDLC文件。基本上,您可以将RLDC文件加载到内存中(它只是一个XML文件),找到包含表宽度的XML节点-
然后修改内存中的设置。完成此操作后,您可以使用内存中加载的RDLC文件刷新reportViewer控件

是的,我已经做到了,它确实有效。

下面的代码示例通过其XMLpath更改内存中RDLC文件的数据。

  Private Sub ModifyRDLCInMemory()

    Dim xmlDoc As XmlDocument = New XmlDocument
    Dim asm As Reflection.Assembly = Reflection.Assembly.GetExecutingAssembly()
    'create in memory, a XML file from a embedded resource
    Dim xmlStream As Stream = asm.GetManifestResourceStream(ReportViewer1.LocalReport.ReportEmbeddedResource)

    Try
      'Load the RDLC file into a XML doc
      xmlDoc.Load(xmlStream)
    Catch e As Exception
      MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
    End Try

    'Create an XmlNamespaceManager to resolve the default namespace
    Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(xmlDoc.NameTable)
    nsmgr.AddNamespace("nm", "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition")
    nsmgr.AddNamespace("rd", "http://schemas.microsoft.com/SQLServer/reporting/reportdesigner")

    'Loop through each node in the XML file
    Dim node As XmlNode
    For Each node In xmlDoc.DocumentElement.SelectNodes(String.Format("//nm:{0}[@rd:LocID]", "Value"), nsmgr)  'XPath to LocID node.. You will want to change this to locate your Table Width node. You may need to read up on XMLPath
      Dim nodeValue As String = node.InnerText  'Gets current value of Node
      If (String.IsNullOrEmpty(nodeValue) Or Not nodeValue.StartsWith("=")) Then
        Try
          node.InnerText = YOURNEWVALUE

        Catch ex As Exception
          'handle error
        End Try
      End If
    Next

    ReportViewer1.LocalReport.ReportPath = String.Empty
    ReportViewer1.LocalReport.ReportEmbeddedResource = Nothing
    'Load the updated RDLC document into LocalReport object.
    Dim rdlcOutputStream As StringReader = New StringReader(xmlDoc.DocumentElement.OuterXml)
    Using rdlcOutputStream
      ReportViewer1.LocalReport.LoadReportDefinition(rdlcOutputStream)
    End Using

  End Sub


 类似资料:
  • 我有一个javafx GridPane,当我调整阶段大小时,它会调整自己的大小以适应阶段的大小。我希望gridpane的高度与gridpane的宽度相匹配,并因此将大小调整为尽可能大的大小,同时保持这种约束。 我不得不在GridPane的父级中添加更多的元素。我发现添加的元素完全没有正常的行为,并且相互重叠。 当然,当我移除重写方法时,它们不再重叠,但当我调整舞台大小时,网格窗格并没有保持一个完美

  • 我有一个有3列的网格。问题是第3列比其他两列更宽。都不是 网格-模板-列:重复(自动拟合,最小(33.33%,1fr)); 也不 网格自动列:33%; 工作,因为IE11不支持自动拟合和网格自动列。 在IE11中有没有替代的方法来实现这一点呢?多谢了。

  • 问题内容: 目前,通过STYLE,我可以在和高度上使用和,反之亦然,但是我仍然不能将图像分别限制在一个特定的位置,无论是太宽还是太高。 有任何想法吗? 问题答案: 如果仅在图像上定义一维,则将始终保留图像长宽比。 图像是否比您喜欢的更大/更佳? 您可以将其放入DIV中,该DIV设置为图像所需的最大高度/宽度,然后设置“ overflow:hidden”。那将收获超出您想要的任何东西。 如果图像的宽

  • 我实现了动态的列可见性来隐藏/显示列,例如和来显示/隐藏列5。我也有一个的回调,比方说,它用第5列中的文本制作了一个html按钮。 目前在中,我检查,如果为真,则继续执行

  • 问题内容: 我正在尝试在页面右侧浮动一个容器。在它的左侧,有很多表格需要100%的宽度。我希望它们一直延伸到右侧的浮动元素。当右边的那个元素结束时,我希望表格扩展到页面的末尾。 这在除IE之外的所有浏览器中都很好用。在IE中,所有表格都显示在右侧浮动元素下方。我知道IE中隐藏了溢出的解决方法,但我无法使其正常工作。 下面的代码。 问题答案: 如果某些内容在其他浏览器中有效,但在IE9中不起作用,则

  • 我正在使用JasperReports 4.5.0生成报告。我正在生成不同格式的报告,如html、csv、pdf、xls、doc。在我的一份报告中,我有6列,分别是col1、col2、col3、col4、col5、col6。但根据情况,我想把col4藏起来。为此,我使用了printWhenExpression。现在它根据条件隐藏列,但问题是该列占用的空间保持不变。 我怎样才能去掉col3和col5之