2010-02-22 30 views
0

我正在使用ObjectDataSource控件來調用MapInfo對象。這個對象有兩個屬性:ObjectDataSource數據綁定:獲取對象屬性,請參閱Select方法調用

  • 公衆的IList訪問
  • 公衆詮釋TotalAvailable

select方法返回一個IList,但也填充TotalAvailable財產。我已將ObjectDataSource中的TypeName設置爲MapInfo對象,但由於Select方法僅返回IList,因此我無法訪問TotalAvailable。

[DataObject(true)] 
public sealed class MapInfo 
{ 
    private IList<Visit> visits; 
    private int totalCount; 

    public IList<Visit> Visits 
    { 
     get 
     { 
      if (visits == null) 
       visits = new List<Visit>(); 
      return visits; 
     } 
     set 
     { 
      visits = value; 
     } 
    } 

    [DataObjectMethod(DataObjectMethodType.Select)] 
    public IList<Visit> GetAccountVisits(DateTime startdate, DateTime enddate, string orgids, int reportlevel, 
     string username, int authlevel, bool visited, bool notvisited, string accounttypeid) 
    { 

}

有什麼辦法來訪問此值。我知道它正在填充到MapInfo對象中,但是從Select方法返回的所有內容都是IList在選擇發生之後數據源觸發Selected事件的IList

回答

0

;你可以嘗試看看它是否暴露了根對象。

HTH。

+0

它沒有。它只是從SelectMethod中返回返回的值。 –

+0

是的,我試過了。但是,ObjectDataSource似乎只返回返回類型,而不是TypeName屬性中指定的根對象。 如上所述,我改變了返回類型,並將連接控件改爲綁定到子對象的數據綁定。 –

+0

您的其他選項是將MapInfo屬性添加到Visit類,該類引用父級。這樣,它會保持這種關係。 –

0

我已經改變了SelectMethod的返回類型:

[DataObjectMethod(DataObjectMethodType.Select)] 
public MapInfo GetAccountVisits(DateTime startdate, DateTime enddate, string orgids, int reportlevel, 
    string username, int authlevel, bool visited, bool notvisited, string accounttypeid) 
{ 

在我CreateChildControls方法CompositeDataBoundControl,然後我用:

DataBinder.Eval(((object[])(dataSource))[0], "Visits"); 

雖然會欣賞一個更優雅的解決方案。