我正在尝试集成适配器以获得.net中对OptGroup标记的支持。我采用了与平时相同的适配器(一段时间,但没有构建错误或警告)。我在DropDownList中添加项目时设置属性,并尝试在适配器中读取它们,它们似乎设置为Nothing。我在兴趣点输入了断点,在设置之后,我可以看到属性具有值。在适配器中,项目仍然存在但没有所述属性。
为了得到所有可能的故障,我进入完整的硬编码添加项目,这里我们有结果。显示器没有分组,因为!=在适配器上永远不会满足。
列表声明:
Dim item1 As New ListItem("potatoes", "1")
item1.Attributes("OptionGroup") = "optionGroup1"
Dim item2 As New ListItem("Onions", "2")
item2.Attributes("OptionGroup") = "optionGroup2" 'here the optiongroup is set, and debugger sees value to it.
Me.cboMaterial.Items.Add(item1)
Me.cboMaterial.Items.Add(item2)
适配器失败的地方:
Dim list As DropDownList = Me.Control
Dim currentOptionGroup As String = ""
Dim renderedOptionGroups As New Collection
For Each item As ListItem In list.Items
If item.Attributes("OptionGroup") = "" Then 'here, the item is worth something (potatoes) but the OptionGroup is nothing.
RenderListItem(item, writer)
Else
If currentOptionGroup <> item.Attributes("OptionGroup") Then
If currentOptionGroup <> "" Then
RenderOptionGroupEndTag(writer)
End If
currentOptionGroup = item.Attributes("OptionGroup")
RenderOptionGroupBeginTag(currentOptionGroup, writer)
End If
RenderListItem(item, writer)
End If
Next
我必须遗漏一些东西,也许是微不足道的,但我长期以来一直在寻找相同的东西。欢迎任何帮助。
编辑:我已经尝试使用辅助语法添加属性...我猜是绝望。
item2.Attributes.Add("OptionGroup","optionGroup2")
它什么都没改变:P