1

ドロップダウン リスト、ラベル、テキスト ボックスを含む Web フォームがあります。以下のように:

<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.どこに問題がありますか?
4

2 に答える 2

3

私は問題を解決しました。テキスト ボックスとラベルを 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ました。それは問題を解決しました。

于 2010-06-15T09:47:36.163 に答える
0

Page_Init は、ページの初期化時に発生します。このイベント中に、コントロールが作成されたという保証はありません。

それまでにコントロールが作成されていることが保証されているため、コードを Page_Load に配置してみてください。

于 2010-06-15T08:25:48.100 に答える