如果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