我有一个列表框:
<asp:ListBox runat="server" ID ="lbxIncidentsSel" Rows="4" SelectionMode="Single"></asp:ListBox>
点击按钮触发一些代码添加一些项目:
Protected Sub btnIncidentsAdd_Click(sender As Object, e As EventArgs)
Dim lbxIncidentsSel As ListBox = CType(NormalFormView.FindControl("lbxIncidentsSel"), ListBox)
' logic here is unimportant
lbxIncidentsSel.Items.Add(SomeItem) ' this can be a list of items
lbxIncidentsSel.DataBind()
End Sub
对于我尝试添加的第一个项目,这些项目将添加得很好,并显示在页面上的lbxIncidentsSel
列表框中。
我尝试添加的下一个项目,这些项目将正确添加到代码后面,我可以在Items
向下钻取中看到它们,但在页面呈现时,它们不显示。
如果我试图重新添加相同的项目或其他项目,在代码后面,第二批不再在列表中,整个过程重复-它会正确地将其添加到代码后面,但不会添加到显示器上。
为什么这适用于我添加的第一个项目(或一组项目(,而不适用于其他项目
请注意,代码在vb.net中,但问题发生在c#codebehind too 中
我通过将ListBox
中存在的项目记录在一个单独的列表中,然后在添加记录的列表和新条目之前清除实际的ListBox
来解决这个问题。
我不知道为什么这是必要的,这似乎是一种奇怪的行为,但我们开始了。