我按照一些帖子上所教的方法进行自定义微软报表的数据源,可是运行起来发现页面在不停的刷新,报表一直处在“加载”的状态。源代码贴出来,大家看看怎么回事?开发工具是VS2010+SQL2008后台:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Reporting.WebForms;public partial class _Default : System.Web.UI.Page
{
MyDbEngine SqlEngine = new MyDbEngine();//这是我自己写的一个SQL执行类,没有问题的。
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = GetData();
ReportDataSource rds = new ReportDataSource("DataSet1", dt);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();
} public DataTable GetData()
{string str="select * from MeetRoom_info";
DataSet ds= SqlEngine.ExecuteDataSet(str);
return ds.Tables [0];
}
}页面代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div> <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager> <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana"
Font-Size="8pt" InteractiveDeviceInfos="(集合)" WaitMessageFont-Names="Verdana"
WaitMessageFont-Size="14pt"> <LocalReport ReportPath="Report.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1" />
</DataSources>
</LocalReport>
</rsweb:ReportViewer> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
TypeName="DataSet1TableAdapters."></asp:ObjectDataSource>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Reporting.WebForms;public partial class _Default : System.Web.UI.Page
{
MyDbEngine SqlEngine = new MyDbEngine();//这是我自己写的一个SQL执行类,没有问题的。
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = GetData();
ReportDataSource rds = new ReportDataSource("DataSet1", dt);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();
} public DataTable GetData()
{string str="select * from MeetRoom_info";
DataSet ds= SqlEngine.ExecuteDataSet(str);
return ds.Tables [0];
}
}页面代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div> <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager> <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana"
Font-Size="8pt" InteractiveDeviceInfos="(集合)" WaitMessageFont-Names="Verdana"
WaitMessageFont-Size="14pt"> <LocalReport ReportPath="Report.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1" />
</DataSources>
</LocalReport>
</rsweb:ReportViewer> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
TypeName="DataSet1TableAdapters."></asp:ObjectDataSource>
</form>
</body>
</html>
解决方案 »
- ASP.NET怎么让跳出"添加成功"的对话框后不刷新页面
- 如何获取运行时创建的控件的值?
- GridView 调用Iframe问题(技术活)
- 应用程序中的服务器错误
- 新人求救,请各位朋友帮帮忙吖!急急急吖
- Literal在datalist的ItemTemplate之内就无法访问?
- 请夜间高手帮忙,关于一个无刷新DropdownList联动的问题 ? 在线等......
- 关于asp.net用户控件在ASPX页中的 控件属性的用法
- 怎样用asp.net(c#)在IIS中创建一个虚拟目录
- 请微软的MVP等高手入内!ASP.NET页面关于智能导航引发的问题,还有办法触发页面的客户端事件吗?如window_onload()
- 点击改变文字大小
- 请问,这条绑定语句为什么不起作用呢?
一、就是在加载报表前加上 if (!IsPostBack)进行判断是否页面回发,就不会出现报表不停加载的情况了。
二、ReportDataSource rds = new ReportDataSource("参数1", 参数2);中,参数1必须是报表之前设定的数据集的名称,参数2是该数据集中的表,如果默认就一个表,一般就写成“数据集.table[0]”.这个问题整整困扰了我三天三夜,最后终于搞定了,问了好多人都没用结果,最后自己解决了,真是求人不如求己啊!正确的代码贴出来,希望大家少走弯路。
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Reporting.WebForms;public partial class _Default : System.Web.UI.Page
{
MyDbEngine sqlengine = new MyDbEngine(); protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string str = "select * from MeetingOrder_info where OrderID=23112";
DataSet DataSet1 = sqlengine.ExecuteDataSet(str);
this.ReportViewer1.Reset();
this.ReportViewer1.LocalReport.ReportPath = "Report.rdlc";
this.ReportViewer1.LocalReport.DataSources.Clear();
this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", DataSet1.Tables[0]));
this.ReportViewer1.LocalReport.Refresh();
}
}
}前台代码:
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana"
Font-Size="8pt" InteractiveDeviceInfos="(集合)" WaitMessageFont-Names="Verdana"
WaitMessageFont-Size="14pt" Width="653px">
<LocalReport ReportPath="Report.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1" />
</DataSources>
</LocalReport>
</rsweb:ReportViewer>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetData"
TypeName="DATABASEDataSetTableAdapters.MeetingOrder_infoTableAdapter">
</asp:ObjectDataSource>
</form>
</body>
</html>
注意对比红色部分。
[email protected]