我目前正在使用从DropDownList继承的控件(它具有一些与该问题无关的额外功能,但它为我实现了我要讨论的额外内容提供了一个好地方)。
我们正在使用数据绑定,其中DataTextField和DataValueField可以正常工作。但是,我发现自己需要类似的字段来控制是否启用该项目。 (我已经重写了控件的RenderContents方法,因此它可以正确地呈现未启用的项目,因为默认情况下DropDownList不会执行此操作。)
因此,我想知道如何重写DropDownList的数据绑定,使其完全正常工作,只是将每个DataSource项目的另一个字段应用于每个ListItem的Enabled属性。
(注意:我要绑定的字段不是直接的布尔值,并且没有显式/隐式强制转换为布尔值,因此我可能会将其作为字符串“传递”。)
最佳答案
DropDownList控件的绑定逻辑实际上是在其基类ListControl中实现的。您需要重写的方法是PerformDataBinding(IEnumerable)
您可以查看Reflector中的默认实现,以确保您不会错过任何内容,但是它是受保护的虚拟内容,因此您应该没有任何问题。只需调用base,然后添加所需的逻辑即可。
关于c# - DropDownList:DataTextField,DataValueField ... DataEnabledField?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2948447/