Contrôle ajouté dynamiquement ne faisant pas de publication
-
08-07-2019 - |
Question
Je remplace une grille en ajoutant des fonctionnalités client. L'une des fonctionnalités est une liste déroulante permettant d'ajuster la taille de la page. J'étends la grille en utilisant un contrôle serveur client, ce qui fonctionne très bien pour ce que j'ai fait jusqu'à présent. Maintenant, cependant, j'ai un peu de difficulté à obtenir le contrôle ajouté dynamiquement pour effectuer une publication. Le javascript pour lancer la publication n'est pas présent.
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
Le code HTML est
<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>
Alors, est-ce que cela a à voir avec quand je "injecte" les contrôles? Est-ce que cela a à voir avec l'ajout dynamique des contrôles?
La solution
La première chose que j'ai remarquée, c'est que vous manqueriez ceci:
pageSizeDropdown.AutoPostBack = true
mais je ne sais pas si c'est tout ce dont vous avez besoin pour que cela fonctionne
Autres conseils
Vous devez définir "AutoPostBack". true pour une liste déroulante à publier. Sinon, un autre contrôle devra renvoyer le formulaire (toutefois, l'événement SelectedIndexChanged sera déclenché lorsque cela se produira).
Je pense que le contrôle pageSizeDropdown devrait être créé et que l'événement a été créé plus tôt dans le cycle de vie de la page, voir http://msdn.microsoft.com/en-us/library/ms178472.aspx . Le contrôle ajouté dynamiquement doit être créé avant l'événement LoadComplete de la page afin que son événement de contrôle puisse être déclenché.