<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用Linq作為rdlc報(bào)表的數(shù)據(jù)源

      平時(shí)做報(bào)表大都使用ADO.NET填充數(shù)據(jù)集來(lái)處理,今天嘗試了下用Linq來(lái)做,也很方便,不過(guò)稍微費(fèi)了一番周折。

      示例代碼下載

       

      一、準(zhǔn)備工作

      1、Northwind數(shù)據(jù)庫(kù)

      2、開(kāi)發(fā)環(huán)境:VS2008 + SQL Server 2008

      3、本測(cè)試采用網(wǎng)頁(yè)形式,WinForm大同小異,感興趣的朋友可以自己測(cè)試下

       

      二、制作報(bào)表

        這次先用rdlc測(cè)試,下次改用水晶報(bào)表試試。報(bào)表的布局還是很簡(jiǎn)單的,由于是測(cè)試,只放了很少的控件:

      核心控件是一個(gè)Table,添加了三列,頁(yè)眉放置了一個(gè)Label,為了便于查詢,報(bào)表添加了一個(gè)參數(shù):p_Country,當(dāng)用戶選擇后可以即時(shí)查詢信息。

       

      三、準(zhǔn)備數(shù)據(jù)源

      這一步是關(guān)鍵,經(jīng)典的DataSet拖拽方式早已經(jīng)深入人心,通過(guò)Server Explorer拖拽幾個(gè)表過(guò)來(lái),再?gòu)腤ebsite Data Source中拖拽相應(yīng)的字段,就好了。但是Linq呢?你會(huì)發(fā)現(xiàn)Website Data Source中除了三個(gè)節(jié)點(diǎn)外空空如也:

      根本就沒(méi)有我們所需要的字段,又怎么拖拽呢?我查找了一些資料,發(fā)現(xiàn)用存儲(chǔ)過(guò)程是可以的,首先定義好存儲(chǔ)過(guò)程,在數(shù)據(jù)庫(kù)中執(zhí)行,然后更新Northwind.dbml文件,將新創(chuàng)建的存儲(chǔ)過(guò)程拖拽到方法欄中:

      然后 Ctrl + Shift + S 全部保存,再打開(kāi)報(bào)表時(shí)就能發(fā)現(xiàn)需要的字段了:

      下面就是熟悉的步驟:拖拽、居中對(duì)齊、加粗...

       

      四、后臺(tái)代碼

      前臺(tái)準(zhǔn)備工作完成后,剩下的工作就輕松多了。在WebForm上放置了一個(gè)ReportViewer控件,用來(lái)呈現(xiàn)報(bào)表,同時(shí)有一個(gè)DropDownList供用戶選擇:

       

      初始化DropDownList的數(shù)據(jù)源,查詢出Customers表中的所有Country(去除重復(fù)值):

      代碼
          private void fnDataIni()
          {
              NorthwindDataContext ctx 
      = new NorthwindDataContext();
              var result 
      = from c in ctx.Customers
                           select c.Country;
              
      foreach (string list in result.Distinct<string>().ToList<string>())
              {
                  
      this.ddlCountry.Items.Add(list);
              }
          }

       

       

      最后一步:構(gòu)造數(shù)據(jù)源,傳遞參數(shù),刷新報(bào)表

      代碼
          private void fnBuildDataSource(string v_strCountry)
          {
              NorthwindDataContext ctx 
      = new NorthwindDataContext();
              var datasource 
      = from c in ctx.sp_LinqTest(v_strCountry)
                               orderby c.CustomerID
                               select c;

              ReportParameter rpCountry 
      = new ReportParameter("p_Country", v_strCountry);
              
      this.rvNorthwind.LocalReport.SetParameters(new ReportParameter[] { rpCountry });
              
      this.rvNorthwind.LocalReport.DataSources.Add(new ReportDataSource("sp_LinqTestResult", datasource.ToList()));
              
      this.rvNorthwind.LocalReport.Refresh();
          }

       

       

      最終效果圖如下:

       

      小結(jié):

        用Linq做數(shù)據(jù)源雖然可以實(shí)現(xiàn),但是相對(duì)于傳統(tǒng)的DataSet,其效率值得考慮,尤其當(dāng)數(shù)據(jù)量很大時(shí),報(bào)表的反應(yīng)速度尤其重要,現(xiàn)在微軟對(duì)Linq做數(shù)據(jù)源的支持還不夠“官方”,期待VS2010中有何新特性吧!

      本次我也留下了一些疑問(wèn):

      1、不用存儲(chǔ)過(guò)程(或視圖)是否可行呢?

      2、能否從后臺(tái)編程獲取RDLC的控件實(shí)例?

      3、能否操作RDL語(yǔ)言來(lái)嵌入Linq呢?

      4、如果Linq返回了匿名類型該如何拖拽呢?

      posted @ 2010-01-25 23:26  江蘇瑞步科技  閱讀(3970)  評(píng)論(10)    收藏  舉報(bào)
      主站蜘蛛池模板: 在线播放国产精品三级网| 男女猛烈无遮挡免费视频APP| 亚洲sm另类一区二区三区| 日韩激情一区二区三区| 精品国产久一区二区三区| 中文字幕免费一二三区乱码| 南康市| 极品少妇无套内射视频| 精品国产中文字幕在线| 日韩av裸体在线播放| 欧美性猛交xxxx免费看| 国产精品国产高清国产专区 | 国产精品线在线精品国语| 国精品91人妻无码一区二区三区| 成人区人妻精品一区二区 | 免费无码又爽又刺激网站| 久99久热免费视频播放| 综合图区亚洲欧美另类图片| 无套后入极品美女少妇| 自拍偷拍视频一区二区三区| 黄色三级亚洲男人的天堂| 自慰无码一区二区三区| 无码福利写真片视频在线播放| av天堂午夜精品一区| 亚洲一区二区三区人妻天堂| 天堂影院一区二区三区四区| 四虎成人精品无码永久在线| 亚洲AV无码不卡在线播放| 久久99精品久久久久久齐齐 | 在线天堂中文新版www| 午夜大尺度福利视频一区| 亚洲成色精品一二三区| 高清国产av一区二区三区| 熟妇人妻av中文字幕老熟妇| 污网站在线观看视频| 久久99热只有频精品8| 好硬好湿好爽好深视频| 国产成人无码av一区二区| 国产在线精品国偷产拍| 高清自拍亚洲精品二区| 国产综合精品一区二区三区|