我认为其他答案很复杂。对我来说,你似乎需要
<div class="rowContainer">
<div style="float:right">
<uc:YourControl>
</div>
<div>
用于可扩展控件的行。当用户快速展开按钮页面时,会将另一个 YourControls 添加到 div.rowContainer 与父另一个具有浮动权的 div:
<div class="rowContainer">
<div style="float:right">
<uc:YourControl>
</div>
<div style="float:right">
<uc:YourControl>
</div>
<div>
当用户将添加另一行消息时,使用 div.rowContainer 添加另一个行容器:
<div class="allMessagesContainer">
<div class="rowContainer">
<div style="float:right">
<uc:YourControl>
</div>
<div>
<div style="clear:both">
<div class="rowContainer">
<div style="float:right">
<uc:YourControl>
</div>
<div>
</div>
clear:both
很重要,因为将浮动中断到下一行。我认为创建 3 个控件会很好:1.<uc:YourControl>
使用单个消息 2. 控件从轻松附加消息到左侧,只需在同一控件内div.rowContainer
添加另一个到服务器即可。3.控制所有消息,以便在下一行轻松添加消息。只需向容器添加另一个行控件。div
float:right
控件的浮动也不会强制用户无限向左滚动。这不好,他们讨厌那样。
还有一个:asp.net 不适合这类网站。事情很快变得复杂起来。如果嵌套控件之一中的按钮应该在 Page 上执行某些操作怎么办?您是否应该向 Page 添加方法并将其强制转换为控件?((MyPage)Page).DoSomeWork()
如果页面类型发生变化怎么办?创建界面?也许代之以委托。把他放在哪里?在页面中?控制?创建事件并通过所有父母对其进行冒泡?一些上下文类?
更不用说重新初始化动态控件树的必要性,每次回发都是发送的。