Asp.Net C#中使用水晶報表詳解分析

來源:互聯網
上載者:User
1) 從webform工具列中拖動水晶報表檢視器控制項(crystal report viewer)至.asp教程x頁面中。 
  2) 調出水晶報表檢視器控制項的屬性視窗  
  3) 點擊[...]按鈕查看"data binding"屬性,並彈出了databinding視窗。
  4) 從左邊的"bindable屬性”區中選擇“report source”
  5) 選中"自訂綁定運算式"選項按鈕,在右邊的底部的視窗中指定.rpt檔案的檔案名稱和路徑,例如:"c:program filesmicrosoft visual studio.netcrystal reportssamplesreportsgeneral businessworld sales report.rpt",然後”確定“
  注意:檔案”world sales report.rpt“檔案是在vs.net安裝時建立的。如果你在安裝過程中指定了其它目錄,此時你最好確認一下路徑的正確性。
  上面的步驟中實際上是插入了下面這些代碼至asp.net教程檔案中:
<%@ register tagprefix="cr" namespace="crystaldecisions.web" assembly="crystaldecisions.web" %>

以及:

<cr:crystalreportviewer>
id="crystalreportviewer1"
runat="server" width="350px" height="50px"
reportsource='' <%# "c:program filesmicrosoft visual studio.netcrystal reportssamplesreportsgeneral businessworld sales report.rpt" %>''>
</cr:crystalreportviewer>
注意:在飛刀我的vs.net正式版中自動產生的程式碼中reportsource產生的樣式不是這樣子的,它是:
reportsource=" <%# c:xxxxxxxx.rpt %>"
  這樣是錯誤的,會出現錯誤資訊,有兩處錯誤:
databind中要有雙引號,因此外部只能用單引號
目錄分隔字元號不能使用"",必須使用""
  必須按照使用本文介紹的格式來手動修改,這也算是vs.net的一個bug吧。
  6) 在page_load方法中調用databind方法。(代碼為vb.net)
private sub page_load(byval sender as system.object, byval e as system.eventargs)

databind()

end sub
7)儲存並編譯你的頁面。 現在,你就有一個內嵌水晶報表的webform頁面了。
  注意:實際開發中,一開始會出現無法訪問inetsrv目錄的錯誤,解決的辦法是改變其目錄的安全屬性,使user使用者有可寫的許可權。飛刀我發現.net系統自已給出的解決方案是沒有用的,也可能是我使用的是windows.net作業系統的原因。
使用push模式
  我們採用下面的幾步使用push模式執行水晶報表:
  1. 設計一個dataset
  2. 建立一個.rpt檔案同時將其指定給上一步建立的dataset。
  3. 在aspx頁面中拖放一個crystalreportviewer控制項同時將其與前面的rpt檔案建立聯絡。
  4. 在代碼中訪問資料庫教程並把資料存入dataset
  5. 調用databind方法。
  設計一個dataset
  1) 右擊“解決方案瀏覽器”,選擇“添加”--“添加新項”-->“資料集”

  2) 從“伺服器總管”中的“sql server”中拖放“stores”表(位於pubs資料庫中)。
  3) 此時在資料集中就會有一個stores表的結構圖。
  - .xsd檔案中僅僅包含一個結構圖,但是不會有任何資料在裡面。
  建立 .rpt 檔案 :
  4) 使用上面的介紹過的方法建立此檔案,唯一的不同就是使用資料集來代替前面的直接連接資料。
  5)建立.rpt檔案之後,右擊“詳細資料”-->"添加/刪除資料庫“
  6) 在”資料庫專家“視窗中,展開”項目資料“(代替以前的oledb),展開“ado.net資料集”--"dataset1“,選擇”stores“表。
  7) 將”stores"表添加到“選定的表”中,點擊“ok”
  8) 使用pull模式下的方法,建立一個webform
  建立一個crystal report viewer 控制項
  9) 建立一個crystal report viewer 控制項,並設定其屬性,此處與pull模式下是一致的。
  code behind 代碼:
  10) 在page_load方法中使用下面的子函數:
vb.net代碼:
 sub bindreport()

    dim myconnection as new sqlclient.sqlconnection()

    myconnection.connectionstring= "server= (local)netsdk;database=pubs;trusted_connection=yes"

    dim mycommand as new sqlclient.sqlcommand()

    mycommand.connection = myconnection

    mycommand.commandtext = "select * from stores"

    mycommand.commandtype = commandtype.text

    dim myda as new sqlclient.sqldataadapter()

    myda.selectcommand = mycommand

    dim myds as new dataset1()
''這就是我們在設計模式上使用的dataset
    myda.fill(myds, "stores")
    ''你不得不使用與你前面dataset相同名字。
    dim orpt as new crystalreport1()
    '' 水晶報表綁定
    orpt.setdatasource(myds)
    '' 設定水晶報表的reportsource
    crystalreportviewer1.reportsource = orpt
  end sub
c#代碼:
private void bindreport()

{

  string strprovider = "server=(local);database=pubs;uid=sa;pwd=";

  crystalreport1 ocr = new crystalreport1();

  dataset1 ds = new dataset1();

  sqlconnection myconn = new sqlconnection(strprovider);

  myconn.open();

  string strsel = "select * from stores";

  sqldataadapter myadapter = new sqldataadapter(strsel,myconn);

  myadapter.fill(ds,"stores");

  ocr.setdatasource(ds);

  this.crystalreportviewer1.reportsource = ocr;

}
注意:在上面的代碼中,你得注意一下orpt是"strongly typed"的報表檔案。如果你需要使用"untyped"報表,你得使用reportdocument對象,然後再調用報表檔案。
  運行你的程式。
  11) 運行你的程式
  將報表檔案匯出成為其它格式
  你能夠將報表檔案匯出成為下列格式:
      1. pdf (portable document format)
      2. doc (ms word document)
      3. xls (ms excel spreadsheet)
      4. html (hyper text markup language – 3.2 or 4.0 compliant)
      5. rtf (rich text format)
  使用pull模式匯出報表
  當匯出使用pull模式建立的檔案時,水晶報表準確地開啟所需要的資料,下面是執行匯出功能的代碼:
c#代碼:
vb.net代碼:
private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click

  dim myreport as crystalreport1 = new crystalreport1()

  ''注意:這裡我們建立一個strong-typed的水晶報表執行個體。

    dim diskopts as crystaldecisions.shared.diskfiledestinationoptions = new crystaldecisions.shared.diskfiledestinationoptions()

    myreport.exportoptions.exportdestinationtype = crystaldecisions.[shared].exportdestinationtype.diskfile

  '' 匯出成為其它檔案時也需要這個選項

  '' 如microsoft exchange, mapi等.

    myreport.exportoptions.exportformattype = crystaldecisions. [shared].exportformattype.portabledocformat

  ''這裡我們匯出成為.pdf格式檔案,你也能選擇上面的其它類型檔案

    diskopts.diskfilename = "c:output.pdf"

  ''如果你不指定確切的目錄,那麼檔案就會儲存到[windows]system32目錄中去了

    myreport.exportoptions.destinationoptions = diskopts

  ''水晶報表檔案不包含直接的filename屬性,因此你不能直接指定儲存的檔案名稱

  ''所以你不得不使用diskfiledestinationoptions對象,設定它的diskfilename屬性

  ''為你想要的路徑,最後將水晶報表的destinationsoptions屬性指定為上面的diskfiledestinationoption

    myreport.export()

  ''上面的代碼將完成匯出工作。

end sub
使用push模式匯出水晶報表
  當匯出的報表是由push模式建立的時,第一步就是通過編程建立串連並組裝dataset,設定報表的的setdatasource屬性。再下面的步驟就有pull模式一樣的了。
使用pull模式
  我們將通過下面的這些步驟來通過pull模式來執行水晶報表
  1.首先建立rpt檔案,並使用水晶報表設計介面設定一些必須的資料連線。
  2.拖放一個 crystalreportviewer控制項至aspx頁面,設定它的屬性指定我們上一步建立的.rpt檔案。
  3. 在代碼中調用databind方法。
  建立 .rpt 檔案:
  1) 在右擊”解決方案遊覽器“,在彈出的菜單中選擇”添加“--”添加新項“-->”crystal report”  
  2) 在”crystal report 庫”中選擇”作為空白報表“選項按鈕,最後單擊“確定“。  
  3)這裡將彈出水晶報表設計師。  
  4) 右擊報表中的”詳細資料區”,選擇“資料庫”->“添加/刪除資料庫..."
  5) 在彈出的”資料庫專家“中,擴充”ole db(ado)“選項,此時會彈出另外一個”ole db(ado)“視窗。
  6) 在 "ole db (ado)" 快顯視窗中,選擇 "microsoft ole db provider for sql server" 然後 "next"
  7) 指定串連的資訊
  伺服器 : aspcn (您的機器是什麼名字就寫什麼)
  使用者 id: sa
  密碼:
  資料庫 : pubs
  8) 單擊”next“,最後單擊”finish“按鈕。
  9) 這時你就能在”資料庫專家“視窗中看到我們選擇的資料庫。
  10) 擴充”pubs“資料庫,擴充”表“,選擇”stores“表並將其加到”選定的表“區中,單擊”ok"按鈕。
 
  11) 現在在”欄位資源總管“中就會在左邊”資料庫欄位“區中顯示你選擇的表,以及表中的欄位。
  12) 拖放需要的欄位進入報表的”詳細資料“區。欄位名將會自動出現在”頁首“區。如果你想修改頭部文字,則可以右擊”頁首“區中的文字,選擇”編輯文字物件“選項並進行編輯。
  13) 儲存,這樣我們就有了一個水晶報表檔案。
  建立 crystalreportviewer 控制項
  14) 回到前面的webform中,拖放一個crystal report viewer控制項到頁面中去。
  15) 調出crystal report viewer控制項的屬性視窗,選擇“databindings"區點擊[...]
  16) ”crystal report viewer 資料繫結視窗”中,在右邊的“可綁定屬性”中選擇”reportsource“,並選擇右下角的“自訂綁定運算式”中指定.rpt檔案路徑。  
  17) 此時你能夠從crystal report viewer 控制項中看到使用一些虛擬資料群組成的報表檔案的預覽。
  注意:在上面的例子中,crystalreportviewer可以在設計時直接調用真實的資料,因為此時資料已經儲存。在這種情況下,設計時當沒有儲存資料時,他是不能顯示資料的。取而代這的是顯示一些虛擬資料,只有在執行時才會選取真實的資料。
  code behind 程式設計
  18) 在page_load方法中調用databind方法。
  執行你的程式
  19) 建立並運行你的程式!  

  您現在就可以直接在web頁面中使用水晶報表內建的一些功能,如頁面導航,縮放等。

  我們將通過下面的這些步驟來通過pull模式來執行水晶報表
  1.首先建立rpt檔案,並使用水晶報表設計介面設定一些必須的資料連線。
  2.拖放一個 crystalreportviewer控制項至aspx頁面,設定它的屬性指定我們上一步建立的.rpt檔案。
  3. 在代碼中調用databind方法。
  建立 .rpt 檔案:
  1) 在右擊”解決方案遊覽器“,在彈出的菜單中選擇”添加“--”添加新項“-->”crystal report”  
  2) 在”crystal report 庫”中選擇”作為空白報表“選項按鈕,最後單擊“確定“。  
  3)這裡將彈出水晶報表設計師。  
  4) 右擊報表中的”詳細資料區”,選擇“資料庫”->“添加/刪除資料庫..."
  5) 在彈出的”資料庫專家“中,擴充”ole db(ado)“選項,此時會彈出另外一個”ole db(ado)“視窗。
  6) 在 "ole db (ado)" 快顯視窗中,選擇 "microsoft ole db provider for sql server" 然後 "next"
  7) 指定串連的資訊
  伺服器 : aspcn (您的機器是什麼名字就寫什麼)
  使用者 id: sa
  密碼:
  資料庫 : pubs
  8) 單擊”next“,最後單擊”finish“按鈕。
  9) 這時你就能在”資料庫專家“視窗中看到我們選擇的資料庫。
  10) 擴充”pubs“資料庫,擴充”表“,選擇”stores“表並將其加到”選定的表“區中,單擊”ok"按鈕。
 
  11) 現在在”欄位資源總管“中就會在左邊”資料庫欄位“區中顯示你選擇的表,以及表中的欄位。
  12) 拖放需要的欄位進入報表的”詳細資料“區。欄位名將會自動出現在”頁首“區。如果你想修改頭部文字,則可以右擊”頁首“區中的文字,選擇”編輯文字物件“選項並進行編輯。
  13) 儲存,這樣我們就有了一個水晶報表檔案。
  建立 crystalreportviewer 控制項
  14) 回到前面的webform中,拖放一個crystal report viewer控制項到頁面中去。
  15) 調出crystal report viewer控制項的屬性視窗,選擇“databindings"區點擊[...]
  16) ”crystal report viewer 資料繫結視窗”中,在右邊的“可綁定屬性”中選擇”reportsource“,並選擇右下角的“自訂綁定運算式”中指定.rpt檔案路徑。  
  17) 此時你能夠從crystal report viewer 控制項中看到使用一些虛擬資料群組成的報表檔案的預覽。
  注意:在上面的例子中,crystalreportviewer可以在設計時直接調用真實的資料,因為此時資料已經儲存。在這種情況下,設計時當沒有儲存資料時,他是不能顯示資料的。取而代這的是顯示一些虛擬資料,只有在執行時才會選取真實的資料。
  code behind 程式設計
  18) 在page_load方法中調用databind方法。
  執行你的程式
  19) 建立並運行你的程式!  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.