asp.net - 将 CheckBoxList TemplateControl 替换为自定义 UserControl?

标签 asp.net checkboxlist itemplate

我正在尝试为标准 CheckBoxList 控件创建更详细的项目模板。它公开了一个名为 TemplateControl 的 ITemplate 属性,但我无法找到有关如何实际使用它的简单资源。这是我到目前为止的代码:

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
    MyBase.OnLoad(e)

    Dim items As New List(Of ListItem)
    items.Add(New ListItem() With {.Text = "A", .Value = "1"})
    items.Add(New ListItem() With {.Text = "B", .Value = "2"})
    items.Add(New ListItem() With {.Text = "C", .Value = "3"})

    Dim lst As New CheckBoxList()
    Dim tpl As ITemplate = LoadTemplate("~/CustomListItem.ascx")
    Dim g As New TemplateControlWrapper()
    tpl.InstantiateIn(g)
    lst.TemplateControl = g
    lst.DataSource = items
    lst.DataBind()

    Form.Controls.Add(lst)

End Sub

Class TemplateControlWrapper
    Inherits UserControl

End Class

它似乎完全忽略了 TemplateControl 属性。有什么想法吗?

最佳答案

CheckBoxList 的 TemplateControl 属性实际上不允许您修改 CheckBoxList 的模板。这是从 System.Web.UI.Control 继承的属性,它表示 CheckBoxList 所在的模板化控件,或者换句话说,该控件所在的 .aspx 页面、.ascx 用户控件或母版页继续生活。 (如果该控件作为复合控件的一部分包含在内,老实说,如果不进行实验,我不知道 TemplateControl 属性是否会返回 null,或者继续沿着控制链向上查找,直到找到 Page 或 UserControl。)

CheckBoxList 控件不提供您想要执行的模板修改类型。您可能需要自定义绑定(bind) Repeater 或 DataList(使用 ItemTemplate 中的 CheckBox 控件)才能实现您正在寻找的功能。

关于asp.net - 将 CheckBoxList TemplateControl 替换为自定义 UserControl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2179717/

相关文章:

yii2 - Yii 2 ActiveForm 表单字段如何在复选框列表中实现 "select all"选项?

java - 根据列表中的复选框创建新列表

.net - 代码隐藏中的 ITemplate 和 DataGrid 列

asp.net - 有没有比 FindControl() 更好的方法来访问 ITemplate 中的控件?

c# - HiddenField 不是 WebControl?

c# - 如何仅为按钮事件设置进度条

带枚举的 C# 复选框列表

c# - 带有自定义 ItemTemplate 的 ASP.Net 动态 Gridview

asp.net - 在不同的数据库架构上创建 ASP.NET 用户和角色表

.net - ViewState 在 ASP.NET MVC 中是否相关?