problema RadAjaxManager quando mostra / controllo di nascondere il caricamento della pagina

StackOverflow https://stackoverflow.com/questions/3043537

  •  27-09-2019
  •  | 
  •  

Domanda

Ho il modulo web con discesa elenco, etichetta e casella di testo. Come di seguito:

<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> 

Voglio mostrare / nascondere etichetta e casella di testo a seconda del valore selezionato nella lista a discesa. Così ho aggiunto 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>  

e la procedura "SetupVisibility", che prende il valore dall'elenco a discesa, fa alcune walidations e desides se mostrare o nascondere l'etichetta e la casella di testo. Quando uso la procedura in questo modo:

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

funziona bene, ma ora voglio chiamare SetupVisibility quando la pagina viene caricata:

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

Il problema si verifica in un tale scenario:

  1. SetupVisibility () pelli casella di testo e l'etichetta mentre pagina.
  2. I Valore cambiamento sul menu a tendina ddlTest.
  3. SetupVisibility () vuole mostrare testo e l'etichetta, ma poi ottengo l'errore :? Microsoft JScript - runtime error: Cannot update control with ID: ctl00_CPH1_lblTest. The control does not exist. Dov'è il problema
È stato utile?

Soluzione

ho risolto il problema. Ho avvolto la casella di testo e l'etichetta in div e pannello:

<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>

e AjaxManager:

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

SetupVisibility() dentro di me insieme panelTest.Visibility. E 'risolto il problema.

Altri suggerimenti

Page_Init viene licenziato quando la pagina viene inizializzazione. Nel corso di questo evento non c'è guarentee che sono stati creati i controlli ..

Prova a mettere il codice nel Page_Load come controlli sono garantiti per essere stato creato da allora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top