DotNetNuke: GridView несовместим с уровнем доступа к данным?

Я работаю над модулем DotNetNuke на C#, и, чтобы уменьшить сложность, я решил попытаться сохранить конфигурацию модуля на одной странице (кроме стандартного модуля настроек). Теперь мне интересно, насколько это мудрая идея.

Мой модуль представляет собой простую галерею изображений с одним или несколькими изображениями. Каждое изображение имеет заголовок, источник изображения (URL) и пункт назначения (другой URL). Поэтому я решил, что для моего интерфейса администратора у меня может быть простая «сетка» данных, где вы можете редактировать все существующие записи или добавлять новые, все на одной странице, примерно так:

 Title              Image URL                           Anchor HREF
[A Picture!      ] [http://www.example.com/image.jpg ] [http://www.example.com]
[Another Picture!] [http://www.example.com/image2.jpg] [http://www.example.net]
[                ] [                                 ] [                      ]

Просматривая WebControls, я нашел GridView, который на первый взгляд показался мне тем, что я искал. Однако, внимательно изучив его, я обнаружил, что он должен быть привязан непосредственно к источнику данных, в то время как кажется, что стандарт DotNetNuke для выполнения действий на уровне доступа к данным заключается в создании набора объектов данных, например:

// EditDiscovery.ascx.cs
DiscoveryController objDiscoverys = new DiscoveryController();
List<DiscoveryInfo> lstDiscoveries = objDiscoverys.GetDiscoverys(ModuleId);

// DiscoveryController.cs
public List<DiscoveryInfo> GetDiscoverys(int ModuleId) {
    return CBO.FillCollection<DiscoveryInfo>(DataProvider.Instance().GetDiscoverys(ModuleId));
}

Есть ли что-то, чего мне не хватает в GridView, или мне следует изменить функцию GetDiscoverys, чтобы она возвращала набор данных, а не список объектов DiscoveryInfo? Или есть лучший подход, который лучше согласуется с DAL DotNetNuke?


person AlexMax    schedule 25.01.2011    source источник


Ответы (1)


Вы должны иметь возможность установить список DiscoveryInfo объектов в сетку.

MyGrid.DataSource = lstDiscoveries;
MyGrid.DataBind();
person bdukes    schedule 25.01.2011
comment
Ах, из того, что я читал, у меня сложилось впечатление, что я должен поставить DataSet или что-то более близкое к металлу. В ретроспективе это было простое решение, но эти вещи не совсем очевидны для тех, кто только начинает работать с C# и ASP.NET, и мой первоначальный ответ на ваш ответ был: «О, я не знал, что DataSource может принять список объектов. Спасибо! - person AlexMax; 25.01.2011