Pau*_*ock 61 reporting-services ssrs-2008 ssrs-tablix
我有一个SSRS报告,其中包含一个Tablix中的20多列.我们的用户已经确定数据没问题,但他们希望列移动(叹息!).
似乎应该很容易重新排列列(将列3移动到列1,交换列4和5等).但是,拖放似乎不起作用,唯一的解决方案似乎是删除原始列并将其重新插入正确的位置(并重新应用已为列创建的任何表达式和格式).
有没有更简单的方法呢?请注意,我不需要程序化解决方案,但只需在设计模式下更改一次.
小智 100
有一种方法可以通过设计师完成.
要移动列,请插入要在目标位置移动的空白列数.然后按住左键单击要移动的单元格(不是标题列).现在,您应该能够右键单击并选择"剪切"命令.现在,右键单击目标列的顶部,然后选择"粘贴".最后,删除现在空的旧列.
小智 29
如果您可以阅读XML(只需了解标记的开始和结束位置等),您就可以轻松完成任务.您可以采取以下一系列步骤:
<Tablix Name="Tablix1"> ....</Tablix ><Textbox Name="...">...</Texbox>嵌套在<TablixCells><TablixCell><CellContents>....标记内的不同" " 标记<Textbox...>...</Texbox>您将获得具有新列排序的新报表.其实,你需要移动(剪切和粘贴)的全部<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)