Привязка данных ObjectDataSource: получение свойств объекта после вызова метода Select

Я использую элемент управления ObjectDataSource для вызова объекта MapInfo. Этот объект имеет два свойства:

  • публичные посещения IList
  • public int TotalAvailable

Метод select возвращает IList, но свойство TotalAvailable также заполняется. Я установил TypeName в ObjectDataSource для объекта 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


person Ryan Tomlinson    schedule 22.02.2010    source источник


Ответы (2)


этот источник данных запускает событие Selected после того, как происходит выбор; вы можете попытаться увидеть, предоставляет ли он там корневой объект.

HTH.

person Brian Mains    schedule 22.02.2010
comment
Это не так. Он просто возвращает возвращенные значения из SelectMethod. - person Ryan Tomlinson; 22.02.2010
comment
Да, я пробовал это. Но опять же ObjectDataSource, кажется, возвращает только возвращаемый тип, а не корневой объект, указанный в свойстве TypeName. Как и выше, я изменил тип возвращаемого значения и изменил элемент управления подключением для привязки данных к дочерним объектам. - person Ryan Tomlinson; 24.02.2010
comment
Другой вариант - добавить свойство MapInfo в класс Visit, который ссылается на родительский. Таким образом, он сохранил бы эти отношения. - person Brian Mains; 24.02.2010

Я изменил тип возвращаемого значения 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)
{

Затем в моем CompositeDataBoundControl в методе CreateChildControls я использую:

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

Хотя был бы признателен за более элегантное решение.

person Ryan Tomlinson    schedule 22.02.2010