我想将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控件更直接。
感谢您的时间。