有没有一种简单的方法可以在SSRS设计模式下重新排列Tablix列?

Pau*_*ock 61 reporting-services ssrs-2008 ssrs-tablix

我有一个SSRS报告,其中包含一个Tablix中的20多列.我们的用户已经确定数据没问题,但他们希望列移动(叹息!).

似乎应该很容易重新排列列(将列3移动到列1,交换列4和5等).但是,拖放似乎不起作用,唯一的解决方案似乎是删除原始列并将其重新插入正确的位置(并重新应用已为列创建的任何表达式和格式).

有没有更简单的方法呢?请注意,我不需要程序化解决方案,但只需在设计模式下更改一次.

小智 100

有一种方法可以通过设计师完成.

要移动列,请插入要在目标位置移动的空白列数.然后按住左键单击要移动的单元格(不是标题列).现在,您应该能够右键单击并选择"剪切"命令.现在,右键单击目标列的顶部,然后选择"粘贴".最后,删除现在空的旧列.

  • 用行来试试这个; 像魅力一样工作.比编辑XML更安全/更容易... (3认同)
  • 这应该是最好的答案.比乱用XML要安全得多. (3认同)

小智 29

如果您可以阅读XML(只需了解标记的开始和结束位置等)​​,您就可以轻松完成任务.您可以采取以下一系列步骤:

  1. 首先通过将原始报告复制到另一个文件来备份原始报告.
  2. 右键单击解决方案资源管理器中的报告,然后选择"查看代码"
  3. 这打开了报告的RDL ---不要害怕它只是一个简单的xml文件
  4. 现在在RDL文件中找到"Tablix1"标签 - 寻找 <Tablix Name="Tablix1"> ....</Tablix >
  5. 您现在需要查找<Textbox Name="...">...</Texbox>嵌套在<TablixCells><TablixCell><CellContents>....标记内的不同" " 标记
  6. 现在,您只需重新排列这些列的顺序即可轻松重新排列报表的列,<Textbox...>...</Texbox>您将获得具有新列排序的新报表.

  • +1是另一个例子,说明微软在为其开发者提供合理的报告工具方面投入的资金. (16认同)
  • 对于阅读此响应的任何人来说,只需一个FYI,您必须将包含列名的元素与包含详细信息的元素分开移动.列宽也与您应用的任何可见性规则一样单独存储...此方法开始看起来不那么容易了...... (5认同)
  • 如果你觉得这个XML方法太复杂了,那么Scott Blasingame的Asnwer会更简单! (2认同)

Diz*_*izz 5

其实,你需要移动(剪切和粘贴)的全部<TablixCell>元素(之间的一切栏<TablixCell></TablixCell>包括<TablixCell></TablixCell>标签本身).

例如,要重新排列列在下面的例子中,使"产品ID"列来之前的"产品名称"一栏,你会选择从首次下调整款"产品名称"电池元件周围的(一切<TablixCell>的第一</TablixCell>),然后将其粘贴</TablixCell>该"产品ID"列.
请注意,有一组完整的<TablixCell> Tablix中定义的每一行都有元素; 每一个都在一个单独的<TablixRow>元素中.如果您保留默认标题列(设置列名称),则第一个<TablixRow>定义该标题行,第二个定义列中的数据,它是您要编辑的那一行.重新排列数据列之后,您需要对标题列执行相同的操作(如果有的话),或者只需使用设计器重命名列以匹配列中的数据.

实际上,这是如此复杂,以至于通过使用设计器插入要移动列的新列来移动列可能更容易,使用该列的正确数据源设置它,然后删除原始列.对于下面的示例,您将在Product ID之后插入一个新列,将其设置为ProductName数据源列(在标题行中将其设置为"Product Name"),然后删除左侧的原始Product Name列.

...
<TablixCell>
  <CellContents>
    <Textbox Name="ProductName">
      <CanGrow>true</CanGrow>
      <KeepTogether>true</KeepTogether>
      <Paragraphs>
        <Paragraph>
          <TextRuns>
            <TextRun>
              <Value>=Fields!ProductName.Value</Value>
              <Style />
            </TextRun>
          </TextRuns>
          <Style />
        </Paragraph>
      </Paragraphs>
      <rd:DefaultName>ProductName</rd:DefaultName>
      <Style>
        <Border>
          <Color>LightGrey</Color>
          <Style>Solid</Style>
        </Border>
        <PaddingLeft>2pt</PaddingLeft>
        <PaddingRight>2pt</PaddingRight>
        <PaddingTop>2pt</PaddingTop>
        <PaddingBottom>2pt</PaddingBottom>
      </Style>
    </Textbox>
  </CellContents>
</TablixCell>
<TablixCell>
  <CellContents>
    <Textbox Name="ProductID">
      <CanGrow>true</CanGrow>
      <KeepTogether>true</KeepTogether>
      <Paragraphs>
        <Paragraph>
          <TextRuns>
            <TextRun>
              <Value>=Fields!ProductID.Value</Value>
              <Style />
            </TextRun>
          </TextRuns>
          <Style />
        </Paragraph>
      </Paragraphs>
      <rd:DefaultName>ProductID</rd:DefaultName>
      <Style>
        <Border>
          <Color>LightGrey</Color>
          <Style>Solid</Style>
        </Border>
        <PaddingLeft>2pt</PaddingLeft>
        <PaddingRight>2pt</PaddingRight>
        <PaddingTop>2pt</PaddingTop>
        <PaddingBottom>2pt</PaddingBottom>
      </Style>
    </Textbox>
  </CellContents>
</TablixCell>
...
Run Code Online (Sandbox Code Playgroud)

在剪切/粘贴后,您将最终得到:

...
<TablixCell>
  <CellContents>
    <Textbox Name="ProductID">
      <CanGrow>true</CanGrow>
      <KeepTogether>true</KeepTogether>
      <Paragraphs>
        <Paragraph>
          <TextRuns>
            <TextRun>
              <Value>=Fields!ProductID.Value</Value>
              <Style />
            </TextRun>
          </TextRuns>
          <Style />
        </Paragraph>
      </Paragraphs>
      <rd:DefaultName>ProductID</rd:DefaultName>
      <Style>
        <Border>
          <Color>LightGrey</Color>
          <Style>Solid</Style>
        </Border>
        <PaddingLeft>2pt</PaddingLeft>
        <PaddingRight>2pt</PaddingRight>
        <PaddingTop>2pt</PaddingTop>
        <PaddingBottom>2pt</PaddingBottom>
      </Style>
    </Textbox>
  </CellContents>
</TablixCell>
<TablixCell>
  <CellContents>
    <Textbox Name="ProductName">
      <CanGrow>true</CanGrow>
      <KeepTogether>true</KeepTogether>
      <Paragraphs>
        <Paragraph>
          <TextRuns>
            <TextRun>
              <Value>=Fields!ProductName.Value</Value>
              <Style />
            </TextRun>
          </TextRuns>
          <Style />
        </Paragraph>
      </Paragraphs>
      <rd:DefaultName>ProductName</rd:DefaultName>
      <Style>
        <Border>
          <Color>LightGrey</Color>
          <Style>Solid</Style>
        </Border>
        <PaddingLeft>2pt</PaddingLeft>
        <PaddingRight>2pt</PaddingRight>
        <PaddingTop>2pt</PaddingTop>
        <PaddingBottom>2pt</PaddingBottom>
      </Style>
    </Textbox>
  </CellContents>
</TablixCell>
...
Run Code Online (Sandbox Code Playgroud)