【问题标题】:RadAjaxManager problem when showing/hiding control on page loading在页面加载时显示/隐藏控件时的 RadAjaxManager 问题
【发布时间】:2010-06-15 08:18:54
【问题描述】:

我有带有下拉列表、标签和文本框的网络表单。如下:

<asp:DropDownList ID="ddlTest" runat="server" AutoPostBack="true">
</asp:DropDownList> 

<asp:Label ID="lblTest" runat="server" Text="Some text">
</asp:Label>
<asp:TextBox ID="edtTest" runat="server">
</asp:TextBox> 

我想根据下拉列表中选择的值显示/隐藏标签和文本框。所以我添加了 RadAjaxManader:

<rad:RadAjaxManager ID="RadAjaxManager1" runat="server">  
    <AjaxSettings>   
        <rad:AjaxSetting AjaxControlID="ddlTest">   
            <UpdatedControls> 
                <rad:AjaxUpdatedControl ControlID="lblTest" /> 
                <rad:AjaxUpdatedControl ControlID="edtTest" /> 
            </UpdatedControls> 
        </rad:AjaxSetting> 
    </AjaxSettings> 
</rad:RadAjaxManager>  

以及从下拉列表中获取值的过程“SetupVisibility”,执行一些验证并决定是显示还是隐藏标签和文本框。当我使用这样的程序时:

Protected Sub ddlTest_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlTest.SelectedIndexChanged  
    SetupVisibility()  
End Sub 

效果很好,但现在我想在页面加载时调用 SetupVisibility:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    SetupVisibility()
End Sub

问题出现在这样的场景中:

  1. SetupVisibility() 在页面加载时隐藏文本框和标签。
  2. 我更改了 ddlTest 下拉列表中的值。
  3. SetupVisibility() 想要显示文本框和标签,但随后我收到错误Microsoft JScript - runtime error: Cannot update control with ID: ctl00_CPH1_lblTest. The control does not exist. 问题出在哪里?

【问题讨论】:

    标签: telerik radajaxmanager


    【解决方案1】:

    我已经解决了这个问题。我已将文本框和标签包装到 div 和面板中:

    <div id="panelTest_DIV" runat="server">
      <asp:Panel ID="panelTest" runat="server">
        <asp:Label ID="lblTest" runat="server" Text="Some text..."></asp:Label><br />
        <asp:TextBox ID="edtTest" runat="server"></asp:TextBox>
      </asp:Panel>
    </div>
    

    和 AjaxManager:

    <rad:AjaxSetting AjaxControlID="ddlTest">
      <UpdatedControls>
        <rad:AjaxUpdatedControl ControlID="panelTest_DIV" />
      </UpdatedControls>
    </rad:AjaxSetting>
    

    SetupVisibility() 里面我设置了panelTest.Visibility。它解决了这个问题。

    【讨论】:

      【解决方案2】:

      Page_Init 在页面初始化时触发。在此事件期间,无法保证控件已创建..

      尝试将您的代码放在 Page_Load 中,因为届时可以保证已创建控件。

      【讨论】:

      • 我已经在 Page_Load 中完成了。我刚刚在我的问题中犯了一个错误。已更正。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多