使用Object DataSource

时间:2011-09-29 14:34:51

标签: c# asp.net data-binding gridview objectdatasource

我正在尝试使用ObjectBindingSource将数据绑定到gridview。数据以模型的形式作为控制器的子类出现在视图中。

var _controller = new DataController(param1, param2);

你会以这种方式访问​​它

foreach(var Variable in _controller.DataModel.Cars)
<%: Car.Name %> ...

如何使用此DataModel.Cars作为Object绑定源的源?

我目前有

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"  
        TypeName="Choices.ChoiceService.ChoiceCollection"  
        DataObjectTypeName="Choices.ChoiceService.ChoiceObject" 
        InsertMethod="Add" SelectMethod="AsReadOnly"/>

1 个答案:

答案 0 :(得分:2)

在DataController上插入一个Select方法,用你这样做的方式说GetCars:

public class DataController
{
   public IEnumerable<Car> GetCars(int param1, int param2)
   {
      return this.DataModel.Cars;
   }
}

然后你会使用:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"  
        TypeName="Choices.ChoiceService.DataController"  
        DataObjectTypeName="Choices.ChoiceService.Car" 
         SelectMethod="GetCars">
       <SelectParameters>
          <asp:SessionParameter Name="param1" SessionField="param1" />
          <asp:SessionParameter Name="param2" SessionField="param2" />
       </SelectParameters>
</asp:ObjectDataSource>

然后在代码隐藏中设置会话:

Session["param1"] = 12;
Session["param2"] = 13;

注意:有更好的方法可以做到这一点,使用像这样的会话真的很难看,这只是一个例子。您可以从以下选择更好的一个 列表:

http://msdn.microsoft.com/en-us/library/xt50s8kz.aspx

或者,您可以使用ObjectDataSource的OnDataBinding事件以编程方式直接在ObjectDataSource实例上设置参数。