1

我有以下 RadListBox:

   <telerik:RadListBox ID="AttachmentsRadListBox"  CheckBoxes ="true" runat="server" />

它位于 RadWindow 中,因此我通过以下代码填充它,该代码仅在 RadWidnow 变为可见时调用:

AttachmentsRadListBox.DataSource = AttachDT
AttachmentsRadListBox.DataTextField = "DocumentPath"
AttachmentsRadListBox.DataValueField = "DocumentID"
AttachmentsRadListBox.DataBind()
For Each item As RadListBoxItem In AttachmentsRadListBox.Items
     item.Checked = True
Next

到目前为止一切顺利,填充了 RadListBox 并检查了所有项目。

现在,在关闭窗口之前按下 RadWindow 上有一个保存按钮,我试图读取 AttachmentsRadListBox 中的选中项目(因为用户可能已经更改了选中项目的状态)。但是阅读这些项目的所有努力都失败了,例如在“保存”按钮上单击我有以下内容:

Dim test As Integer = AttachmentsRadListBox.Items.Count  // THIS IS ZERO
For Each item As RadListBoxItem In AttachmentsRadListBox.Items  // THERE ARE NO ITEMS
   If Not item.Checked Then
        Dim DocumentIDToDelete As Integer = item.Value
   End If
Next

为什么最后一段代码的行为不像我希望的那样?AttachmentsRadListBox 不再通过回发进行绑定。唯一有界的时间是 RadWindow 出现时。然后 RadWindow 上的 Save 按钮显然会创建一个回发,但我不明白为什么 AttachmentsRadListBox 那时不包含任何项目。

4

1 回答 1

1

由于您动态创建 AttachmentsRadListBox,您是否会在后续回发时重新创建它?归根结底,它是一个服务器控件,因此您需要确保重新创建它,否则 ASP 将在后续回发时销毁它。要了解如何访问 RadWindow 的 ContentTemplate 中的控件,您还可以查看这篇文章:http ://www.telerik.com/help/aspnet-ajax/window-controls-container.html 。

于 2013-08-06T14:00:25.593 回答