UserControls вложенные теги - PullRequest
1 голос
/ 30 июня 2011

Я хочу инкапсулировать элемент управления 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 немного проще.

Спасибо за ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...