如何使用asp.net中的数据集返回数据集并获取结果? 首先,我有一个包含数据集方法的WCF类,它返回了数据集结果 这是我的方法
string conString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
DataSet ds = new DataSet();
using (con = new SqlConnection(conString))
{
SqlCommand cmd = new SqlCommand("spViewMasterTransaction", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parameterEarlyDate = new SqlParameter();
parameterEarlyDate.ParameterName = "@earlyDate";
parameterEarlyDate.Value = earlyDate;
cmd.Parameters.Add(parameterEarlyDate);
SqlParameter parameterLateDate = new SqlParameter();
parameterLateDate.ParameterName = "@lateDate";
parameterLateDate.Value = lateDate;
cmd.Parameters.Add(parameterLateDate);
con.Open();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds, "Master");
}
return ds;
它返回了一个数据集结果,我在我的datagridview中使用它,但我想在我的crystalreport中使用它,当然我不能像在winform datagridview中使用它一样使用它,我想我必须捕获从我的wcf返回的数据集值并将其存储在我的客户端数据集中。如何执行此操作?既然,asp.net没有像winform那样的数据集组件?
答案 0 :(得分:0)
使用CrystalReports,您需要使用 DataTables 而非 DataSet
您可以在 cs 文件中执行以下操作:
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
ReportDocument rptDoc = new ReportDocument();
protected void Page_Init(object sender, EventArgs e)
{
try
{
// Get the DataTable form the DataSet
DataTable dt = yourDataSet.Tables[0]; // Or use the table name like this yourDataSet.Tables["TableName"];
string reportPath = Server.MapPath("~/App_Data/CrystalReport1.rpt");
rptDoc.Load(reportPath);
rptDoc.SetDataSource(dt);
CrystalReportViewer1.ReportSource = rptDoc;
}
catch (Exception ex)
{
lblErrMsg.Text = ex.Message;
}
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
// Clear error message if any.
lblErrMsg.Text = "";
// Crystal Report Fill
DataTable dt = yourDataSet.Tables[0];
rptDoc.SetDataSource(dt);
}
catch (Exception ex)
{
lblErrMsg.Text = ex.Message;
}
}
protected void Page_UnLoad(object sender, EventArgs e)
{
try
{
this.CrystalReportViewer1.Dispose();
this.CrystalReportViewer1 = null;
rptDoc.Close();
rptDoc.Dispose();
rptDoc = null;
GC.Collect();
}
catch (Exception ex)
{
lblErrMsg.Text = ex.Message;
}
}
在你的 aspx 文件中添加如下内容:
<%@ Register Assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server"
AutoDataBind="True" DisplayStatusbar="False"
EnableDatabaseLogonPrompt="False" EnableDrillDown="False"
EnableParameterPrompt="False" EnableTheming="False" EnableToolTips="False"
GroupTreeStyle-ShowLines="False" HasDrilldownTabs="False"
HasDrillUpButton="False" HasGotoPageButton="False"
HasPageNavigationButtons="False" HasSearchButton="False" Height="894px"
SeparatePages="False" ToolPanelView="None" Width="918px"
GroupTreeImagesFolderUrl="" ReportSourceID="CrystalReportSource1"
ToolbarImagesFolderUrl="" ToolPanelWidth="200px"
HasToggleGroupTreeButton="False" HasToggleParameterPanelButton="False" />
<CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
<Report FileName="App_Data\CrystalReport1.rpt">
</Report>
</CR:CrystalReportSource>
我希望它有所帮助。
巴勃罗