我正在尝试在 asp.net web-forms 应用程序中使用 GridView 设置 ObjectDataSource。我计划用于 ObjectDataSource 的 select 命令通过使用存储过程查询数据库来返回 DataTable,如下所示:
public DataTable GetProductsById(string ids = null)
{
DataTable productDataTable = new DataTable();
// Stored procedure (sqldb server) is executed here
SqlCommand cmd = new SqlCommand("GetProductByIdsRML_CLR", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter myParam = new SqlParameter("@ids", SqlDbType.NVarChar);
myParam.Value = (ids);
cmd.Parameters.Add(myParam);
SqlDataAdapter dataAdapter = new SqlDataAdapter();
dataAdapter.SelectCommand = cmd;
dataAdapter.Fill(productDataTable);
return productDataTable;
}
该方法将字符串作为参数,该字符串是以逗号分隔的产品 ID 列表,此参数被传递给存储过程,然后执行查询。但是,我无法正确设置它,因为这个输入ids
是通过代码中的另一个方法传递给这个方法的。这就是问题所在,因为在尝试设置 ObjectDataSource 时,它会询问存储过程的参数应该来自哪里,但“另一种方法”不是一个选项。这就是我所说的:
这些选项似乎都没有封装“该项目中的另一种方法”。如果有人知道在这种情况下该怎么做,那就太好了。此外,如果从存储过程返回 DataTable 不是一个好主意,那也没关系,我可以很容易地改变它,但问题仍然存在。谢谢!我觉得有一个非常简单的解决方案......