【问题标题】:Accessing RadListBox Items in Code-Behind在代码隐藏中访问 RadListBox 项
【发布时间】:2013-07-31 19:43:38
【问题描述】:

我有以下 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 那时不包含任何项目。

【问题讨论】:

    标签: vb.net telerik postback code-behind radlistbox


    【解决方案1】:

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

    【讨论】:

    • 我想我明白你在说什么,但是在开始使用 Telerik 控件之前,我一直在使用 ASP .Net。我认为这里有一些非常不同的东西(在 Telerik 中)。好的,假设我正在尝试应用您的修复:按下保存后有一个回发,这意味着我丢失了我创建的 RadListBox 并且用户更改了其复选框的状态。是的,我可以在回发时创建 RadListBox,但如何保留复选框的状态。我想我可能需要以某种方式处理 RadListBox 的检查状态更改。但我不知道怎么做。
    • 如果您在 Page_Init 事件中创建具有相同 ID 的控件,则应从 ViewState 填充数据(包括复选框状态),因为控件(列表框和复选框)的 ID 应该相同,因此 ASP 应该能够将它们与 POST 数据相匹配。
    猜你喜欢
    • 2010-10-23
    • 2012-06-28
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多