如何从ObjectDataSource中插入代码后面的项目列表,而不是从aspx中插入?

时间:2014-11-17 09:28:05

标签: c# asp.net .net objectdatasource

我的.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;

不起作用。

1 个答案:

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