0

我正在尝试创建一个用户控件,允许用户进行如下操作:

  <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 现在正在画一个空白......有什么想法吗?

4

3 回答 3

2

PersistenceMode.InnerProperty 是您想要的。这是MSDN 文档。 做这样的事情会让你得到你想要的:

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

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

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

您也可以创建自己的自定义类以在其中使用。

于 2008-10-09T03:44:43.737 回答
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 )

于 2008-10-09T02:11:19.293 回答
0

我想我关心的最困难的部分是能够在我的用户控件中模板化任意数量的给定用户控件集。

<mycontrol id="control1" runat="server">
    <templateitem id="bleh1" runat="server" />
    <templateitem id="bleh2" runat="server" />
    <templateitem id="bleh3" runat="server" />
     ..etc
</mycontrol>
于 2008-10-09T02:20:23.143 回答