【问题标题】:Combo box set to visible in code behind, but won't display on aspx page组合框设置为在后面的代码中可见,但不会显示在 aspx 页面上
【发布时间】:2015-01-04 13:06:28
【问题描述】:

我对 Telerik radcomboboxes 没有在 aspx 页面上正确更新有点问题。本质上,用户从 radcombobox 1 中选择“是”或“否”。如果用户选择“是”,则 radcombobox 2 应显示,而 radcombobox 3 应隐藏;如果用户选择“否”,则 radcombobox 3 应显示,而 radcombobox 2 应隐藏。

后面的代码是vb.net。在 aspx 页面上,组合框 1 是 ajaxed 并且应该更新其他两个 radcombobox。在 radcombobox 1 的 SelectedIndexChanged 子代码后面的代码中,radcombobox 2 和 3 的“可见”属性根据用户的选择进行交换。

问题是 radcomboboxes 似乎没有交换(即在 aspx 页面上更新),除非页面被重新加载,我假设这是因为重新加载页面本质上是强制回发。

我不想强制回发来解决此问题,因为我觉得这是一种蛮力解决方法,我想了解为什么逻辑无法正常工作。

这是下面的实际代码。我为上面的 radcomboboxes 使用了通用名称。

    <telerik:AjaxSetting AjaxControlID="cboX2">
<UpdatedControls>
    <telerik:AjaxUpdatedControl ControlID="cboKey" />
    <telerik:AjaxUpdatedControl ControlID="cboKey_X2" />
</UpdatedControls>

这是来自组合框 1 SelectedIndexChanged sub的代码:

    If Me.cboKey.Visible = True OrElse Me.cboKey_X2.Visible = True Then
If piX2 <> 0 Then
    Me.cboKey.Visible = False
    Me.cboKey_X2.Visible = True
ElseIf piX2 = 0 Then
    Me.cboKey_X2.Visible = False
    Me.cboKey.Visible = True
End If

如果结束

任何帮助理解为什么这不起作用将不胜感激!

【问题讨论】:

    标签: asp.net ajax vb.net telerik radcombobox


    【解决方案1】:

    试试这样的:

            <asp:Panel ID="Panel1" runat="server">
                <telerik:RadComboBox ID="RadComboBox1" runat="server"></telerik:RadComboBox>
                <telerik:RadComboBox ID="RadComboBox2" runat="server"></telerik:RadComboBox>
                <telerik:RadComboBox ID="RadComboBox3" runat="server"></telerik:RadComboBox>
            </asp:Panel>
    

    使用这样的 AJAX 设置:

                    <telerik:AjaxSetting AjaxControlID="RadComboBox1">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="Panel1" />
                        </UpdatedControls>
                    </telerik:AjaxSetting>
    

    可能由于某种原因,其他组合框没有更新。很可能,因为默认情况下它们是 Visible=false,所以 RadAjaxManager 不能在它们周围包裹一个 UpdatePanel 来更新它们,因为它们根本不存在。

    【讨论】:

    • 感谢您的建议!我确实尝试添加一个面板,但仍然得到相同的结果。组合框位于嵌入在 aspx 页面中的用户控件上,因此可能有一些事情正在造成干扰。
    • 首先,尝试删除所有 AJAX。如果一切正常,那么问题是所需的控件不会在客户端上运行。在这种情况下,请检查启用 AJAX 时的网络响应并查看包含哪些内容和未包含哪些内容,以修复您的 AJAX 设置。总是有可能你有一个服务器/JavaScript 错误会破坏事情,所以单步执行你的服务器代码并监控你的浏览器控制台来修复它们。
    • 由于页面的复杂性(和时间线限制),我决定另辟蹊径,根据用户在初始组合框中的选择,更新页面以重新绑定单个组合框,而不是而不是试图隐藏/显示两个组合框。非常感谢您的时间和帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 2011-07-28
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多