Grid++Report(GridPPReport) 代碼綁定數據源(填充明細數據)


網上看了好幾個方法,要么就是用報表直接連數據庫的,另外一個哥們,寫的是用另外一個事件綁定數據源的,那樣的問題就是,還要另外考慮報表對象怎么傳遞
后面調整思路,想了想,調整了下代碼。改進了一下,主要就是記錄一下,另外呢,放出來看看還有什么不對的,需要改進。 
 
 1 private void GridPrintPreview(string rptPath, Dictionary<string, object> dic, DataTable dt = null)
 2 {
 3     GridppReport report = new GridppReport();
 4     report.LoadFromFile(rptPath);
 5     if (dic.Count > 0)
 6     {
 7         foreach (string k in dic.Keys)
 8             report.ParameterByName(k).AsString = dic[k].ToString();
 9     }
10     if (dt != null && dt.Rows.Count > 0)
11     {
12         report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(() =>
13         {
14             Dictionary<int, int> columnDic = new Dictionary<int, int>();
15             //Report.DetailGrid.Recordset.Fields的索引從1開始
16             int fieldCount = report.DetailGrid.Recordset.Fields.Count;
17             for (int x = 0; x < fieldCount; x++)
18             {
19                 string columnName = report.DetailGrid.Recordset.Fields[x + 1].Name;
20                 for (int y = 0; y < dt.Columns.Count; y++)
21                 {
22                     if (columnName == dt.Columns[y].ColumnName)
23                     {
24                         columnDic.Add(x, y);
25                         break;
26                     }
27                 }
28             }
29             for (int x = 0; x < dt.Rows.Count; x++)
30             {
31                 report.DetailGrid.Recordset.Append();
32                 for (int y = 0; y < columnDic.Count; y++)
33                 {
34                     report.DetailGrid.Recordset.Fields[y + 1].GetDisplayTextScript = "";//不設置這個值會報錯
35                     report.DetailGrid.Recordset.Fields[y + 1].Value = dt.Rows[x][columnDic[y]];
36                 }
37                 report.DetailGrid.Recordset.Post();
38             }
39         });
40     }
41     report.PrintPreview(true);
42 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM