Dans mon code, je crée les éléments de menu dynamique:C# asp.net pourquoi mon manuel __doPostBack ne s'exécute qu'une seule fois?
string listClientID = BulletedList1.ClientID.Replace('_', '$');
int counter = 0;
foreach (DataRow dataRow in database.DataTable.Rows)
{
// Add Button
ListItem listItem = new ListItem();
listItem.Value = "buttonItem" + Convert.ToString(dataRow["rank"]);
listItem.Text = " " + Convert.ToString(dataRow["title"]);
listItem.Attributes.Add("onclick", "__doPostBack('" + listClientID + "', '"+ counter.ToString() +"')");
BulletedList1.Items.Add(listItem);
counter++;
}
Ce menu est à l'intérieur d'un panneau de mise à jour:
<div id="MenuItemBox">
<asp:BulletedList
ID="BulletedList1"
runat="server"
OnClick="MenuItem_Click"
>
</asp:BulletedList>
</div>
Ce que je veux quand un listitem est cliqué, il exécute un postback. Mais quand je lance ceci, l'événement onclick n'est exécuté qu'une fois.
Par exemple. J'ai 4 listitems. Lorsque je clique sur le premier élément la première fois que l'événement onclick est exécuté. Maintenant, je clique sur le deuxième élément, l'événement onclick est également exécuté. Mais lorsque je clique à nouveau sur le premier élément, l'événement onclick n'est pas déclenché.
Lorsque je vérifie la console d'erreur dans FireFox ou Oprah, je n'obtiens aucune erreur. Donc, ma question est: comment puis-je résoudre ce problème et qu'est-ce que je fais de mal?
Dans mon page_load, j'ai un chèque pour isPostBack. Si vous avez quelque chose comme if (! IsPostBack) {build menu}. Le __doPostBack ne disparaît pas – Martijn
Thnx pour la réponse, mais pourquoi utilisez-vous OnInit et pas Page_Load? – Martijn
J'ai pensé à ViewState. C'est une différence d'assigner des valeurs qui seront sauvegardées dans ViewState (Init ou Load). Donc, si cela corrige votre problème, nous pouvons l'étudier en détail. Alors est-ce que c'est corrigé maintenant? – Danil