我的.ASPX中有以下声明:
<asp:ObjectDataSource ID="ODS" runat="server"
SelectMethod="GetPlayersData" DataObjectTypeName="DAL.MyObject">
</asp:ObjectDataSource>
如何从后面的代码中将数据放在ObjectDataSource中?
这:
var items = MyFunctions.GetPlayersData().ToList<object>();
ODS.SelectParameters = (ParameterCollection)items;
不起作用。
答案 0 :(得分:1)
如果我了解您要调用DAL.MyObject.GetPlayersData()
并将该数据提供给数据绑定控件,则不一定需要ObjectDataSource
。您只需将数据连接到DataSource属性,然后调用DataBind方法:
GridView myGridView;
//Set Data Source
myGridView.DataSource = DAL.MyObject.GetPlayersData();
//Have GridView pull in the data.
myGridView.DataBind();
或者,如果您仍希望使用ObjectDataSource
的某些功能来使双向数据绑定更好,则可以在代码中以编程方式构建ObjectDataSource
。该过程与声明性语法非常相似:
ODS.SelectMethod = "GetPlayersData",
ODS.DataObjectTypeName = "DAL.MyObject",
ODS.TypeName = "MyFunctions"
ObjectDataSource
会自行调用GetPlayersData()
,因此您无需自行调用。
但是如果由于某些奇怪的原因你需要,你可以覆盖ReturnValue事件中的Selected:
ods.Selected += (sender, args) =>
{
//This will cause GetPlayersData() to be called twice
args.ReturnValue = MyFunctions.GetPlayersData();
}