ASP.NET中的对象数据源问题(GetData方法)

时间:2011-08-18 20:42:53

标签: asp.net visual-studio-2010 objectdatasource

我想在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方法,以及如何使用正确的数据生成报告。

非常感谢。

1 个答案:

答案 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;
}

}

  1. 现在添加数据集让我们说'DataSet1.xsd' 拖放TableAdapter,它会询问您以下详细信息

    3.1连接字符串(选择现有连接字符串或创建新连接字符串)

    3.2选择命令类型(现在选择现有的存储过程,指定您之前创建的存储过程以在报告中显示详细信息

    3.3选择要生成的方法(选中填充数据表并返回数据表

    3.4单击Next and Submit(现在您的数据集真的要在报告中使用)

    1. 创建报告并将此DataSet1用作数据源。