Я хочу инкапсулировать элемент управления ListView в простой пользовательский элемент управления для более легкого повторного использования.Поскольку компоновка шаблона всегда одинакова (различаются только количество строк и заголовки), я подумал, что смогу сгенерировать его на основе следующей информации:
<asp:SimpleList ID="lstPersons" runat="server"
DataSourceID="dsPersons" DataKey="PersonID" EnablePaging="true" Pager="Numeric">
<Columns>
<Column Title="ID" DataField="PersonID" EnableSorting="true" SelectField="true" Width="30"/>
<Column Title="First Name" DataField="FirstName" EnableSorting="true" Width="150"/>
<Column Title="Last Name" DataField="LastName" EnableSorting="true" Width="150"/>
<Column Title="Salary" DataField="Salary" EnableSorting="true" CssClass="numericValueCell" Width="50"/>
</Columns>
</asp:SimpleList>
Когда вы определяете публичные свойства в классе UserControl, ониполучить доступ в разметке.Но что, если у вас есть какой-то список в качестве свойства.Чтобы назначить это свойство в разметке, вы должны использовать вложенные теги в определении UserControl (как в примере выше).Как я могу это сделать?Я думал, что это будет легкая задача, но я не могу собрать все воедино.
Это будет код с выделенным кодом для UserControl без каких-либо атрибутов (пока только свойств).
namespace UserControls
{
public partial class SimpleList : System.Web.UI.UserControl
{
private ColumnCollection columns;
public ColumnCollection Columns
{
get
{
if (this.columns == null)
{
this.columns = new MyListItemCollection();
}
return this.columns;
}
}
// Properties
}
public class ColumnCollection : List<Column>
{
}
public class Column
{
// Properties
}
}
Мне сказали, что мне просто нужно использовать атрибуты PersistenceModeAttribute иParseChildrenAttribute, но как (я действительно пытался)?Я надеюсь, что динамическая генерация LayoutTemplate и ItemTemplate и привязка их к элементу управления DataSource немного проще.
Спасибо за ваше время.