我新建了一张报表,Reportstock.rdlc,将其中的一个文本的导航设置成 跳至报表Report/ReportStockDetail.rdlc
但是在钻取报表时,跟踪程序发现点击报表中的链接时,程序根本不进入ReportViewer1_Drillthrough()执行,不知道为什么,请教大家.
下面是主要代码:
main.aspx:<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt"
Height="400px" Width="760px" OnDrillthrough="ReportViewer1_Drillthrough">
<LocalReport ReportPath="F:\OnlineReport\Report\Reportstock.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSetStock_进货单基本信息" />
</DataSources>
</LocalReport>
</rsweb:ReportViewer>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}" TypeName="ClassStock">
</asp:ObjectDataSource>
main.aspx.cs:protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserInfoString"].ToString() == null)
{
Response.Redirect("Default.aspx");
}
if (!IsPostBack)
{
this.BeginDate.SelectedDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01");
this.EndDate.SelectedDate = this.BeginDate.SelectedDate.AddMonths(1).AddDays(-1);
this.ObjectDataSource1.SelectMethod = "GetNullDS";
}
SetReportParameter();
}
protected void SetReportParameter()
{
string StaffName = Session["Staff"].ToString();
string UserName = Session["UserName"].ToString();
CompanyName = ClassLocalDB.SelectData("系统参数信息", "用户编号", UserName, "参数名称", "票据字号", "参数值"); ReportParameter[] p = new ReportParameter[4]; p[0] = new ReportParameter("编制单位", CompanyName); p[1] = new ReportParameter("操作员", StaffName); string tempStr = "起始日期:" + this.BeginDate.SelectedDate.Year.ToString() + "-" + this.BeginDate.SelectedDate.Month.ToString() +
"-" + this.BeginDate.SelectedDate.Day.ToString() + " 终止日期:" + this.EndDate.SelectedDate.Year.ToString() +
"-" + this.EndDate.SelectedDate.Month.ToString() + "-" + this.EndDate.SelectedDate.Day.ToString();
p[2] = new ReportParameter("日期段", tempStr); p[3] = new ReportParameter("打印日期", System.DateTime.Today.Year.ToString() + "-" + System.DateTime.Today.Month.ToString() + "-" + System.DateTime.Today.Day.ToString());
this.ReportViewer1.LocalReport.SetParameters(p);
}
//向ObjectDataSource中添加四个Parameter
private void AddSelectParameters()
{
//清空所有Parameter
this.ObjectDataSource1.SelectParameters.Clear(); //加载四个Parameter
SessionParameter UserInfoString = new SessionParameter("UserInfoString", "UserInfoString");
this.ObjectDataSource1.SelectParameters.Add(UserInfoString); ControlParameter BeginDate = new ControlParameter();
BeginDate.Name = "BeginDate";
BeginDate.Type = TypeCode.DateTime;
BeginDate.ControlID = "BeginDate";
BeginDate.PropertyName = "SelectedDate";
this.ObjectDataSource1.SelectParameters.Add(BeginDate); ControlParameter EndDate = new ControlParameter();
EndDate.Name = "EndDate";
EndDate.Type = TypeCode.DateTime;
EndDate.ControlID = "EndDate";
EndDate.PropertyName = "SelectedDate";
this.ObjectDataSource1.SelectParameters.Add(EndDate); Parameter ErrorMessage = new Parameter();
ErrorMessage.Name = "ErrorMessage";
ErrorMessage.DefaultValue = "";
this.ObjectDataSource1.SelectParameters.Add(ErrorMessage);
//加载Parameter结束
}
protected void ButtonRefresh_Click(object sender, EventArgs e)
{ grade = 0;
//指定SelectMethod
this.ObjectDataSource1.SelectMethod = "GetStockInfo";
AddSelectParameters();
SetReportParameter();
this.ReportViewer1.LocalReport.Refresh();
}
但是在钻取报表时,跟踪程序发现点击报表中的链接时,程序根本不进入ReportViewer1_Drillthrough()执行,不知道为什么,请教大家.
下面是主要代码:
main.aspx:<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt"
Height="400px" Width="760px" OnDrillthrough="ReportViewer1_Drillthrough">
<LocalReport ReportPath="F:\OnlineReport\Report\Reportstock.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSetStock_进货单基本信息" />
</DataSources>
</LocalReport>
</rsweb:ReportViewer>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}" TypeName="ClassStock">
</asp:ObjectDataSource>
main.aspx.cs:protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserInfoString"].ToString() == null)
{
Response.Redirect("Default.aspx");
}
if (!IsPostBack)
{
this.BeginDate.SelectedDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01");
this.EndDate.SelectedDate = this.BeginDate.SelectedDate.AddMonths(1).AddDays(-1);
this.ObjectDataSource1.SelectMethod = "GetNullDS";
}
SetReportParameter();
}
protected void SetReportParameter()
{
string StaffName = Session["Staff"].ToString();
string UserName = Session["UserName"].ToString();
CompanyName = ClassLocalDB.SelectData("系统参数信息", "用户编号", UserName, "参数名称", "票据字号", "参数值"); ReportParameter[] p = new ReportParameter[4]; p[0] = new ReportParameter("编制单位", CompanyName); p[1] = new ReportParameter("操作员", StaffName); string tempStr = "起始日期:" + this.BeginDate.SelectedDate.Year.ToString() + "-" + this.BeginDate.SelectedDate.Month.ToString() +
"-" + this.BeginDate.SelectedDate.Day.ToString() + " 终止日期:" + this.EndDate.SelectedDate.Year.ToString() +
"-" + this.EndDate.SelectedDate.Month.ToString() + "-" + this.EndDate.SelectedDate.Day.ToString();
p[2] = new ReportParameter("日期段", tempStr); p[3] = new ReportParameter("打印日期", System.DateTime.Today.Year.ToString() + "-" + System.DateTime.Today.Month.ToString() + "-" + System.DateTime.Today.Day.ToString());
this.ReportViewer1.LocalReport.SetParameters(p);
}
//向ObjectDataSource中添加四个Parameter
private void AddSelectParameters()
{
//清空所有Parameter
this.ObjectDataSource1.SelectParameters.Clear(); //加载四个Parameter
SessionParameter UserInfoString = new SessionParameter("UserInfoString", "UserInfoString");
this.ObjectDataSource1.SelectParameters.Add(UserInfoString); ControlParameter BeginDate = new ControlParameter();
BeginDate.Name = "BeginDate";
BeginDate.Type = TypeCode.DateTime;
BeginDate.ControlID = "BeginDate";
BeginDate.PropertyName = "SelectedDate";
this.ObjectDataSource1.SelectParameters.Add(BeginDate); ControlParameter EndDate = new ControlParameter();
EndDate.Name = "EndDate";
EndDate.Type = TypeCode.DateTime;
EndDate.ControlID = "EndDate";
EndDate.PropertyName = "SelectedDate";
this.ObjectDataSource1.SelectParameters.Add(EndDate); Parameter ErrorMessage = new Parameter();
ErrorMessage.Name = "ErrorMessage";
ErrorMessage.DefaultValue = "";
this.ObjectDataSource1.SelectParameters.Add(ErrorMessage);
//加载Parameter结束
}
protected void ButtonRefresh_Click(object sender, EventArgs e)
{ grade = 0;
//指定SelectMethod
this.ObjectDataSource1.SelectMethod = "GetStockInfo";
AddSelectParameters();
SetReportParameter();
this.ReportViewer1.LocalReport.Refresh();
}
遇到相同问题的兄弟可以参考这个网址:http://www.cnblogs.com/waxdoll/archive/2007/12/01/434215.html
讲的很详细
感谢cnblogs的蜡人张
多来几个兄弟啊,马上结贴给分
明天结贴吧,这么多分给不出去就要还给CSDN了,多亏啊