Практическое руководство. Динамическое создание шаблонов в серверном веб-элементе управления DataList
Обновлен: Ноябрь 2007
Шаблоны могут быть назначены не только в режиме разработки. В некоторых случаях шаблон можно спланировать в режиме разработки, но изменения, которые необходимо будет сделать во время выполнения, могут оказаться столь значительными, что загрузка нового шаблона во время выполнения может намного облегчить программирование. В других случаях (если имеется несколько шаблонов) во время выполнения можно заменять один шаблон на другой.
Создание файла определения шаблона
Создайте текстовый файл с расширением ASCX.
Добавьте операторы определения шаблона в файл шаблона и сохраните его, используя ту же разметку, что и для любого декларативного шаблона.
В следующем примере показано содержимое ASCX-файла с разметкой для шаблона, содержащего привязанные к данным элементы управления Label. Привязка к данным разрешается во время выполнения относительно источника данных, привязанного к элементу управления DataList.
Name: <asp:Label ID="CategoryNameLabel" runat="server" Text='<%# Eval("CategoryName") %>'> </asp:Label> <br /> Description: <asp:Label ID="DescriptionLabel" runat="server" Text='<%# Eval("Description") %>'> </asp:Label>
Динамическое создание шаблонов
Добавьте в страницу Web Forms код, загружающий шаблон с помощью метода LoadTemplate. Этот метод считывает определение шаблона из файла и создает объект ITemplate. Этот объект может быть присвоен любому шаблону в элементе управления DataList.
В следующем примере используется обработчик событий Page_Init для загрузки шаблона NewTemplate.ascx, создание которого было показано выше.
Protected Sub Page_Init(ByVal Sender As System.Object, _ ByVal e As System.EventArgs) DataList1.AlternatingItemTemplate = _ Page.LoadTemplate("NewTemplate.ascx") End Sub
protected void Page_Init(object sender, EventArgs e) { DataList1.AlternatingItemTemplate = Page.LoadTemplate("NewTemplate.ascx"); }