none
ReportViewer 動態變更資料行 RRS feed

  • 問題

  • 各位好~有關報表列印的部份

    小弟之前都是用抓坐標的方式來做到並搭配DrawString和DrawRectangle繪上字串跟格子

     '繪上報表標題
                e.Graphics.DrawString("XXXXXXXXXXXXX", myFont1, Brushes.Black, titlePosition, MyFormat)
                e.Graphics.DrawRectangle(Pens.Black, titlePosition)

    以上的方式搭配上For迴圈加上(使用高度)>e.MarginBounds.Height就換頁及達到我的需求

    但是就是每次改程式時會為了座標的位置搞了一整天
              

    最近在書籍看到ReportViewer的用法..覺得輕鬆了許多...但卻遇到了問題

    書籍中再加入報表控制項後..在加入一個Table...在Table中把資料來源中的資料行拖曳到Table裡即可

    在加入ReportViewer即可

    請問說我有辦法在程式使用中變更資料行的嗎??

    像是說Table中的textbox1本來是=Fields!ID_Name.Value..改成=Fields!ID_Address.Value之類的東西

    還有就是動態加入資料行...

    因為我在Form裡呼叫不到Report1.rdlc的Table阿...

    請這方面的大大給點資料或解答吧~~

    PS:該不會因為我的資料行不同~就要多增加幾個Report1.rdlc跟Form吧??

    2010年7月27日 上午 02:46

解答

所有回覆

  • Rdlc檔本身是一個XML格式的檔案, 這個檔案描述了該張報表的設定.

    如果你用一般的文字編輯器 (例如記事本), 就可以開啟來看, 也就是說, 其實可以使用程式動態地去產生Rdlc檔案 (意即動態地產生Xml檔案).

    就可以自由控制了.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年7月27日 上午 03:27
    版主
  • Rdlc檔本身是一個XML格式的檔案, 這個檔案描述了該張報表的設定.

    如果你用一般的文字編輯器 (例如記事本), 就可以開啟來看, 也就是說, 其實可以使用程式動態地去產生Rdlc檔案 (意即動態地產生Xml檔案).

    就可以自由控制了.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。8 部好

    不好以思~由於小弟用的是Windows Form,不是ASP.net

    所以不懂你所說的方法~不知是否有範例可以給小弟參考??

    2010年7月27日 上午 05:46
  • Windows Form 和 Web From 在RDLC的格式上是完全相同的. XML不等於Web Form.

    你可以用記事本去開啟 RDLC檔就會看到格式.

    以下為列舉其中幾部份

    (1) RDLC檔固定的開頭是

    <?xml version="1.0" encoding="utf-8"?>
    <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">

    (2) <DataSources> </<DataSources>這個區塊代表是報表的資料來源

    (3) <PageHeader>  </PageHeader> 這區塊是頁首的設定

    (4)   <Body>  </Body> 這區塊是報表主體

    (5)   <Table Name="table1">
            <DataSetName>DataSet_Daily_DataTable1</DataSetName>
            <Top>0.25cm</Top>
            <Width>27.02646cm</Width>
            <Details>
              <TableRows>
                <TableRow>
                  <TableCells>
                    <TableCell>
                      <ReportItems>
                        <Textbox Name="TargetDate">
                          <rd:DefaultName>TargetDate</rd:DefaultName>
                          <Style>
                            <BorderStyle>
                              <Default>Solid</Default>
                            </BorderStyle>
                            <Format>yyyy/MM/dd</Format>
                            <TextAlign>Center</TextAlign>
                            <PaddingLeft>2pt</PaddingLeft>
                            <PaddingRight>2pt</PaddingRight>
                            <PaddingTop>2pt</PaddingTop>
                            <PaddingBottom>2pt</PaddingBottom>
                          </Style>
                          <ZIndex>12</ZIndex>
                          <CanGrow>true</CanGrow>
                          <Value>=Fields!TargetDate.Value</Value>
                        </Textbox>
                      </ReportItems>

    這一部份就是報表上的表格. 也就是要變動的話是修改 <TableCell><ReportItems> </ReportItems><TableCell>這個區塊. 粗體字就是該cell的資料來源欄位.

    其實也就是弄清楚RDLC檔的XML格式然後處理文字檔的問題而已.

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年7月27日 上午 06:37
    版主
  • HI,

     

    您可以參考這篇資料看看:

    http://www.dotblogs.com.tw/lolota/archive/2008/04/10/2837.aspx

     

    rgs,

    Lolota


    Tech.Days Taiwan 2010 即將於 9/28-9/30 隆重展開!我們很榮幸向您推薦此微軟年度重量級的技術盛會

    • 已標示為解答 十姐妹 2010年7月28日 上午 05:16
    2010年7月27日 上午 10:02
  • Windows Form 和 Web From 在RDLC的格式上是完全相同的. XML不等於Web Form.

    你可以用記事本去開啟 RDLC檔就會看到格式.

    以下為列舉其中幾部份

    (1) RDLC檔固定的開頭是

    <?xml version="1.0" encoding="utf-8"?>
    <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">

    (2) <DataSources> </<DataSources>這個區塊代表是報表的資料來源

    (3) <PageHeader>  </PageHeader> 這區塊是頁首的設定

    (4)   <Body>  </Body> 這區塊是報表主體

    (5)   <Table Name="table1">
            <DataSetName>DataSet_Daily_DataTable1</DataSetName>
            <Top>0.25cm</Top>
            <Width>27.02646cm</Width>
            <Details>
              <TableRows>
                <TableRow>
                  <TableCells>
                    <TableCell>
                      <ReportItems>
                        <Textbox Name="TargetDate">
                          <rd:DefaultName>TargetDate</rd:DefaultName>
                          <Style>
                            <BorderStyle>
                              <Default>Solid</Default>
                            </BorderStyle>
                            <Format>yyyy/MM/dd</Format>
                            <TextAlign>Center</TextAlign>
                            <PaddingLeft>2pt</PaddingLeft>
                            <PaddingRight>2pt</PaddingRight>
                            <PaddingTop>2pt</PaddingTop>
                            <PaddingBottom>2pt</PaddingBottom>
                          </Style>
                          <ZIndex>12</ZIndex>
                          <CanGrow>true</CanGrow>
                          <Value>=Fields!TargetDate.Value</Value>
                        </Textbox>
                      </ReportItems>

    這一部份就是報表上的表格. 也就是要變動的話是修改 <TableCell><ReportItems> </ReportItems><TableCell>這個區塊. 粗體字就是該cell的資料來源欄位.

    其實也就是弄清楚RDLC檔的XML格式然後處理文字檔的問題而已.

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    這個我懂~但是我是要在Form裡面可以用Combox調整

    所以是等他選好~我用覆寫的方式嗎

    還有就算我改了裡面的資料~我的標題並不會跟著改阿

    2010年7月27日 上午 10:23
  • (1) 先設計一個Form, 然後放上你想調整東西, ex: 欄位名稱,...

    (2) 當user調整好, 按下確定, 就由你的程式產生一個rdlc檔 (假設為r1.rdlc)

    (3)把reportViewer的報表來源指向這個 r1.rdlc

    程序上就是這樣.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年7月27日 下午 02:23
    版主
  • 謝謝你阿~感恩  ^^

     

    2010年7月28日 上午 05:16