【发布时间】:2016-09-27 03:51:28
【问题描述】:
我在我的项目中使用 Linq to Sql,datagridview 由一个名为 Get_All_Incomes 的存储过程填充。
我设计了一个水晶报表来查看gridview中的数据但是有一个例外
DataSet 不支持 System.Nullable
我用这段代码填充了gridview
dgvIncome.DataSource = CLS_Incomes.Get_All_Incomes().ToList();
我用这个方法过滤了gridview
string nameFilter = txtCust.Text;
string mediaFilter = comboMedia.SelectedIndex > 0 ? comboMedia.Text : "";
string currencyFilter = comboCurr.SelectedIndex > 0 ? comboCurr.Text :"";
string motalabahFilter = txtMot.Text;
string sanadFilter = txtSanad.Text;
string incomeFilter = txtIncome.Text;
DateTime? fromDate = radioFrom.Checked ? dateTimePicker1.Value.Date : (DateTime?)null;
DateTime? toDate = radioFrom.Checked ? dateTimePicker2.Value.Date : (DateTime?) null;
using (dbDataContext db = new dbDataContext())
{
var result = from p in db.Get_All_Incomes()
where
(nameFilter.Length > 0 && p.CustomersName.Contains(nameFilter) || nameFilter.Length == 0)
&& (mediaFilter.Length > 0 && p.Name == mediaFilter || mediaFilter.Length == 0)
&& (currencyFilter.Length > 0 && p.CurrencyName == currencyFilter || currencyFilter.Length == 0)
&& (motalabahFilter.Length > 0 && p.Motalabah == motalabahFilter || motalabahFilter.Length == 0)
&& (sanadFilter.Length > 0 && p.Sanad == sanadFilter || sanadFilter.Length == 0)
&& (incomeFilter.Length > 0 && p.Income.ToString() == incomeFilter || incomeFilter.Length == 0)
&&
((fromDate == null || toDate == null) ||
(fromDate != null && toDate != null && p.SanadDate >= fromDate && p.SanadDate <= toDate))
select p;
dgvIncome.DataSource = result.ToList();
终于用这个按钮调用了报告
btnReport.Cursor = Cursors.WaitCursor;
Reports.Rpt rpt = new Reports.Rpt();
rpt.SetDataSource(dgvIncome.DataSource);
FRM_Report frm = new FRM_Report();
btnReport.Cursor = Cursors.Default;
frm.ShowDialog();
【问题讨论】:
标签: c# linq crystal-reports