我目前正在使用一个继承自DropDownList的控件(它有一些与这个问题无关的额外功能,但它为我提供了一个很好的地方来实现我想要讨论的额外内容)。
我们使用的是数据绑定,DataTextField和DataValueField工作得非常好。然而,我发现自己需要一个类似的字段来控制是否启用该项目。(我已经覆盖了控件的RenderContents方法,这样它就可以正确地呈现未启用的项,因为DropDownList在默认情况下不会这样做。)
因此,我想知道如何覆盖DropDownList的数据绑定,使其完全正常工作,只是每个DataSource项中的另一个字段应用于每个列表项的Enabled属性。
(注意:我将绑定到的字段不是直接的布尔值,也没有显式/隐式强制转换为布尔值,因此我可能会将其作为字符串“传递”。)
发布于 2010-06-01 17:35:31
DropDownList控件的绑定逻辑实际上是在其基类ListControl中实现的。需要覆盖的方法是PerformDataBinding(IEnumerable)
您可以查看Reflector中的默认实现,以确保您不会遗漏某些东西,但它是受保护的虚拟的,因此您应该不会有任何问题。只需调用base,然后添加所需的逻辑即可。
https://stackoverflow.com/questions/2948447
复制相似问题