UserControls嵌套标签

时间:2011-06-30 13:51:10

标签: .net asp.net listview user-controls

我想将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类中定义公共属性时,它们在标记中可用。但是如果你有某种List作为属性怎么办呢。要在标记中分配此属性,必须在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
    }

}

有人告诉我,我只需要使用Attributes PersistenceModeAttribute和ParseChildrenAttribute,但是如何(我真的尝试过)? 我希望动态生成LayoutTemplate和ItemTemplate并将其绑定到DataSource控件更直接。

感谢您的时间。

0 个答案:

没有答案