2008-10-09 79 views
0

我想创建一个用户控件,使用户能够制造类似以下内容:模板化的ASP.NET用户控件

<uc1:MyControl id="controlThing" runat="server"> 

    <uc1:BoundColumn id="column1" Column="Name" runat="server" /> 
    <uc1:CheckBoxBoundColumn id="column2" Column="Selector" runat="server" /> 
    <uc1:BoundColumn id="column3" Column="Description" runat="server" /> 

    ...etc 

    </uc1:MyControl> 

只有某些控件我会允许,除了事实你可以有许多任何类型。我可以在XSD中看到这一点,但我不完全确定ASP.NET。

我的ASP.NET voodoo现在正在绘制一个空白..任何想法?

回答

2

的PersistenceMode.InnerProperty是你想要的。这里是MSDN docs.做这样的事情会得到你想要的东西:

[PersistenceMode(PersistenceMode.InnerProperty)] 
public ListItem Items { 
    get; set; 
} 

,然后你就可以使用它像这个:

<cc1:MyControl runat="server"> 
    <Items> 
     <asp:ListItem Text="foo" /> 
    </Items> 
</cc1:MyControl> 

你也可以创建你自己的自定义类。

0

是否有可能覆盖现有的控件,如ListView或GridView?这是你最简单的选择。

但是要创建自己的自定义模板化控件,您需要使用ITemplate。

我还没有做一个,但一个快速谷歌返回这个:http://www.developerfusion.com/article/4410/in-depth-aspnet-using-adonet/2/它看起来不错。

我有一本书“开发Microsoft ASP.NET服务器控件和组件”覆盖,但我还没有读通过它深入,但(http://www.amazon.com/exec/obidos/ASIN/0735615829/nikhilkothari-20

0

我想最困难的部分,我很担心能够在我的用户控件内模拟任意数量的给定用户控件。

<mycontrol id="control1" runat="server"> 
    <templateitem id="bleh1" runat="server" /> 
    <templateitem id="bleh2" runat="server" /> 
    <templateitem id="bleh3" runat="server" /> 
    ..etc 
</mycontrol>