EDIT:デバッグ用にストアドプロシージャではなくSQLステートメントを実行しています。エラーが発生しました。データソースインスタンス 'DataSet2'が提供されていません。私もReportViewer1.Reset()を取り除きました。Reportviewerが正しくレポートを表示しない
ReportViewerがReports.aspxの "RunReportButton"ボタンをクリックした後にレポートを表示しない理由を理解しようとしています。 @PersonIDと@Categoryの2つのパラメータを持つSQL文があります。このSQL文は、PersonID = @PersonIDおよび@Category = Categoryを持つPersonExerciseテーブルのすべてのレコードを検索します。このSQL文に基づいてデータセットを実行し、それをreportDataSourceのreports.aspxのコードの後ろに渡します。
次に、Report1.rdlcを作成し、それを自分のデータセットdsCardioにリンクしました。私はExerciseDate、Distance、Speedを自分のデータセットからReport1.rdlcのマトリックスにドラッグしました。ユーザーがReports.aspxでRunReportButtonをクリックすると、次のエラーが表示されます。「データソースインスタンスがDataSet2 'に指定されていません」コードをデバッグして、このDataSet.Tables [0] .Rows.Count = 3を確認しました。私はまた、reportmodeのためにprocessingmode = localを持っています。どんな助け?本当にありがとう!ここで
は、レポートビューアーを持っている私のReports.aspxマークアップです:
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
ここ
<asp:Label ID="lblMessage" runat="server" Text="Label"></asp:Label>
<br />
<br />
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>Cardiovascular</asp:ListItem>
<asp:ListItem>Weight Lifting</asp:ListItem>
</asp:DropDownList>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Button ID="RunReportButton" runat="server"
onclick="RunReportButton_Click1" Text="Run Report" Height="27px"
Width="84px" />
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana"
Font-Size="8pt" InteractiveDeviceInfos="(Collection)"
WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt"
Visible="False">
<LocalReport ReportPath="Report1.rdlc">
</LocalReport>
</rsweb:ReportViewer>
</asp:Content>
はReports.aspx.csです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.ApplicationBlocks.Data;
using Microsoft.Reporting.WebForms;
using System.Data.SqlClient;
using System.Data;
using System.Data.Common;
using System.Data.Sql;
using System.Configuration;
namespace ExerciseTracker2000
{
public partial class Reports : System.Web.UI.Page
{
#region Properties
public static string ConnectionString { get; set; }
public static int personID { get; set; }
#endregion
#region Variables
public int personID = 0;
public SqlParameter[] SearchValue = new SqlParameter[2];
#endregion
#region Page Events
protected void Page_Load(object sender, EventArgs e)
{
personID = CommonMethods.getLoggedInUser();
}
protected void RunReportButton_Click1(object sender, EventArgs e)
{
try
{
DataSet ds = new DataSet();
string strCategory = ddlCategory.SelectedValue;
// strSQL select for orders with no invoices
strSQL = "SELECT PersonID, ExerciseDate, Category, Exercise, Duration, Distance, Speed";
strSQL = strSQL + " from dbo.PersonExercise";
strSQL = strSQL + " where PersonID = " + personID + " And Category = '" + strCategory + "'";
using (var connection = new SqlConnection(ConnectionString))
{
SqlDataAdapter ad = new SqlDataAdapter(strSQL, connection);
ad.Fill(ds, "Table0");
}
//ReportViewer1.Visible is set to false in design mode
ReportViewer1.Visible = true;
SqlConnection thisConnection = new SqlConnection(ConnectionString);
/* Associate thisDataSet (now loaded with the stored
procedure result) with the ReportViewer datasource */
Microsoft.Reporting.WebForms.ReportDataSource datasource = new
Microsoft.Reporting.WebForms.ReportDataSource("DataSetCategories_ShowExercisesByCategory", ds.Tables[0]);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(datasource);
if (thisDataSet.Tables[0].Rows.Count == 0)
{
lblMessage.Text = "Sorry, no products under this category!";
}
ReportViewer1.LocalReport.Refresh();
}
catch (Exception ex)
{
lblMessage.Text = "Error: " + ex.Message.ToString();
}
}
#endregion
}
}
私はReset()メソッドを削除し、次のエラーが表示されます。データソースインスタンスがデータソース 'DataSet2'に指定されていません。どんな助け?ありがとう! – jre247
私は、 "DataSet2"がレポートオブジェクト自体のデータセットの名前であると仮定しています。 ReportViewer1.LocalReport.DataSources.Add(新しいReportDataSource( "DataSet2"、ds))を試してください。 – Jmyster
ありがとう、私はそれが働いた!あなたの助けをありがとう! – jre247