我想在ASP.NET中创建一个向用户显示其数据的报表查看器。 所有用户的数据都位于同一个表中。
现在我创建了DBDataSet,在TableAdapter中有这个方法
GetData(@ idNumber,@ userNumber)
在我想要显示我写的报告查看器的屏幕后面的代码中:
FlightsDBDataSetTableAdapters.ReservationsTableAdapter ReservationsTableAdapter;
ReservationsTableAdapter = new FlightsDBDataSetTableAdapters.ReservationsTableAdapter();
FlightsDBDataSet.ReservationsDataTable newReservationTable;
newReservationTable = ReservationsTableAdapter.GetData(userId, userName);
ObjectDataSource1.SelectParameters.Add("userName", userName);
ObjectDataSource1.SelectParameters.Add("idNumber", userId);
当我运行时,我得到下一个错误
报告处理期间发生错误。 ObjectDataSource控件 'ObjectDataSource1'找不到非泛型方法 'GetData(idNumber,userName)'包含参数:userName,idNumber。
所以,我的问题是我需要在哪里编写GetData方法,以及如何使用正确的数据生成报告。
非常感谢。
答案 0 :(得分:0)
试试这个。
1.创建一个方法,如果在存储过程中未传递参数,则返回db null
public static object GetDataValue(object o)
{
if (o == null || String.Empty.Equals(o))
return DBNull.Value;
else
return o;
}
2.创建一个调用存储过程并填充数据集的方法。
public DataSet GetspTest(string userName, string userId) {
try
{
DataSet oDS = new DataSet();
SqlParameter[] oParam = new SqlParameter[2];
oParam[0] = new SqlParameter("@userName", GetDataValue(userName));
oParam[1] = new SqlParameter("@idNumber", GetDataValue(userId));
oDS = SqlHelper.ExecuteDataset(DataConnectionString, CommandType.StoredProcedure, "spTest", oParam);
return oDS;
}
catch (Exception e)
{
ErrorMessage = e.Message;
return null;
}
}
现在添加数据集让我们说'DataSet1.xsd' 拖放TableAdapter,它会询问您以下详细信息
3.1连接字符串(选择现有连接字符串或创建新连接字符串)
3.2选择命令类型(现在选择现有的存储过程,指定您之前创建的存储过程以在报告中显示详细信息
3.3选择要生成的方法(选中填充数据表并返回数据表
3.4单击Next and Submit(现在您的数据集真的要在报告中使用)