Controllo aggiunto dinamicamente che non esegue il postback
-
08-07-2019 - |
Domanda
Sto eseguendo l'override di una griglia, aggiungendo alcune funzionalità del cliente. Una delle funzionalità è un menu a discesa per regolare le dimensioni della pagina. Sto estendendo la griglia usando un controllo server del cliente, che funziona benissimo per quello che ho fatto finora. Ora, tuttavia, sto avendo un po 'di problemi a ottenere il controllo aggiunto dinamicamente per fare un postback. Il javascript per avviare il postback non è presente.
Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
Dim pageSizePanel As New Panel
...
Dim countList As List(Of String) = GetCountList()
Dim pageSizeDropdown As New DropDownList()
pageSizeDropdown.ID = "pageSizeDropdown"
pageSizeDropdown.DataSource = countList
pageSizeDropdown.DataBind()
AddHandler pageSizeDropdown.SelectedIndexChanged, _
AddressOf HandlePageSizeChange
pageSizePanel.Controls.Add(pageSizeDropdown)
...
MyBase.Controls.AddAt(0, pageSizePanel)
MyBase.OnPreRender(e)
End Sub
L'HTML è
<select name="tab$grid1Tab$RadGrid1$pageSizeDropdown"
id="tab_grid1Tab_RadGrid1_pageSizeDropdown">
<option selected="selected" value="10">10</option>
<option value="20">20</option>
<option value="40">40</option>
<option value="80">80</option>
<option value="All">All</option>
</select>
Quindi, ha a che fare con "iniettando" i controlli? Ha a che fare con l'aggiunta dinamica dei controlli?
Soluzione
La prima cosa che ho notato è che ti saresti perso questo:
pageSizeDropdown.AutoPostBack = true
ma non sono sicuro che sia tutto ciò di cui hai bisogno per farlo funzionare
Altri suggerimenti
Devi impostare " AutoPostBack " su true per un elenco a discesa da postback. In caso contrario, un altro controllo dovrà restituire il modulo (tuttavia, l'evento SelectedIndexChanged verrà generato quando ciò accade).
Penso che la pagina di controllo SizeDropdown debba essere creata e l'evento agganciato in precedenza nel ciclo di vita della pagina, vedere http://msdn.microsoft.com/en-us/library/ms178472.aspx . Il controllo aggiunto dinamicamente deve essere creato prima dell'evento LoadComplete delle pagine in modo che il suo evento di controllo possa essere attivato.