如果ASP.NET网页使用ObjectDataSource,您可以将其配置为使用使用表值参数的存储过程吗?ObjectDataSource可以使用表值参数
用户定义类型:
CREATE TYPE [dbo].[integer_list_tbltype] AS TABLE
(
[n] [int] NOT NULL,
PRIMARY KEY CLUSTERED
)
存储过程:
CREATE PROCEDURE [dbo].[GeneralReport]
@intList integer_list_tbltype READONLY
AS
BEGIN
SELECT * FROM ...
END
ASP.NET
<asp:ObjectDataSource ID="GeneralDataSource" runat="server"
SelectMethod="GetDataByRange"
TypeName="MyProject.GeneralDataSetTableAdapters.GeneralViewTableAdapter"
>
<SelectParameters>
<asp:Parameter Name="intList" />
</SelectParameters>
</asp:ObjectDataSource>
我试图钩住ObjectDataSource的这样的选择事件:
protected void GeneralDataSource_Selecting(object sender, System.Web.UI.WebControls.ObjectDataSourceSelectingEventArgs e)
{
var zeroList = new List<SqlDataRecord>();
var tvp_definition = new[] {new SqlMetaData("n", SqlDbType.Int)};
var sqlDataRecord = new SqlDataRecord(tvp_definition);
sqlDataRecord.SetInt32(0, 0);
zeroList.Add(sqlDataRecord );
e.InputParameters[ "intList" ] = zeroList;
}
但是,这只是导致“System.ArgumentException:UdtTypeName属性必须设置为UDT参数”。被抛出
为了澄清,ReportViewer控件正在使用此功能。 rdlc文件喜欢使用DataSets将数据绑定到报表 - 这就是为什么我使用ObjectDataSource – 2010-10-15 04:20:25