Une réponse appropriée à votre question ne peut être fournie qu'après avoir pris connaissance de la manière dont vous effectuez la liaison de données. Procédez-vous à la liaison de données à partir du code en appelant la méthode .DataBind() du datalist ou fournissez-vous une source de données au datalist à partir duquel effectuer la liaison. La raison pour laquelle je pose cette question est que si vous utilisez la méthode .DataBind() du datalist à partir du code pour lier le datalist, vous devrez l'appeler à chaque publication pour vous assurer que le datalist reçoit à nouveau la base de données. Sinon, après le retour, vous verrez que le datalist apparaît vide. Dans le cas où vous fournissez une source de données au datalist à partir de, en utilisant sa propriété DataSource ou DataSourceId, la liaison de données du datalist sur chaque publication est prise en charge par le framework, vous n'avez pas à vous en préoccuper.
Mais d'après l'apparence des choses, je crois que vous obtenez la valeur nulle parce que vous essayez d'obtenir la valeur de l'élément de données à un mauvais endroit. Rappelez-vous que vous devrez suivre le bon cycle de vie d'un contrôle pour le faire fonctionner comme vous le souhaitez.
Je peux fournir une meilleure réponse si vous pouvez répondre à mes questions ci-dessus. Votre déclaration actuelle semble insuffisante pour fournir une réponse pertinente.
Vous devez redéfinir le contrôle. ViewState ne conservera pas vos éléments liés aux données. –