【发布时间】:2009-12-09 18:33:52
【问题描述】:
我有一个通过 DataSource 填充的 CheckBoxList(每个 CheckBoxList 的值都来自数据库,因此我无法在其中硬编码任何内容),我需要在右侧添加一个按钮以获取详细信息触发某些事件时 CheckBoxList 的特定项。
我可以这样做吗?怎么样?
【问题讨论】:
标签: c# .net asp.net visual-studio-2008 asp.net-ajax
我有一个通过 DataSource 填充的 CheckBoxList(每个 CheckBoxList 的值都来自数据库,因此我无法在其中硬编码任何内容),我需要在右侧添加一个按钮以获取详细信息触发某些事件时 CheckBoxList 的特定项。
我可以这样做吗?怎么样?
【问题讨论】:
标签: c# .net asp.net visual-studio-2008 asp.net-ajax
CheckBoxList 中的每个项目都是一个ListItem 对象。这些不继承自Control,因此它们没有自己的ControlCollection 属性。这意味着您不能将 LinkButton 或 Button 添加到项目中。
如果它基于Control 对象,您将能够挂钩CheckBoxList 的OnDataBound 事件,并遍历项目,直到找到需要按钮的项目。从那里您可以将控件(按钮)添加到单个项目的item.Controls 集合中。但是 ListItem 将受到很大限制,因为它没有此功能。
详情按钮有什么作用?如果它只是一个客户端按钮,您也许可以将 html 注入到 ListItem 的 Text 属性中,尽管我还没有验证它是否有效:
foreach (ListItem item in myCheckBoxList)
{
item.Text += " <input type=\"button\"/>";
}
无论哪种方式,它都不会很漂亮,您可能会更好地创建一个简单的用户控件。在控件中,您仍然可以使用 CheckBoxList,但您可以动态地将 HyperLink 或按钮添加到 UserControl。您可以使用 CSS 或其他方式将按钮布置在正确的位置。
【讨论】:
如果你想这样做,你必须编写一个自定义用户控件。
【讨论】: