ASP.NET / DataItem de DataList est null après publication
Après la publication (cliquez sur un bouton) dans mon ASP.NET forme, tous les DataItem de mon formulaire sont nulles. Pourquoi? Que dois-je faire pour récupérer le contenu de la DataList, même après la publication?
protected void buttonAddRecord_Click(object sender, EventArgs e)
{
foreach (DataListItem item in listFields.Items)
{
//item.DataItem == null WTF?
}
}
protected void Page_Load(object sender, EventArgs e)
{
BindFields();
}
private void BindFields()
{
object setting = MySettings.GetSetting();
if (!Null.IsNull(setting))
{
listFields.DataSource =
DataProvider.GetData(int.Parse(setting.ToString()));
listFields.DataBind();
}
listFields.Visible = listFields.Items.Count > 0;
emptyMessage.Visible = listFields.Items.Count == 0;
}
source d'informationauteur asmo | 2010-08-20
Vous devez vous connecter pour publier un commentaire.
Trouvé ma réponse ici.
Plus précisément, j'ai utilisé un HiddenField pour stocker un ID à travers les messages et je demande des données à partir de la base de données au lieu d'essayer d'obtenir le formulaire de la DataItem (qui ne peuvent pas être utilisés en dehors de la liaison de données de l'événement).
DataItem
n'est disponible que lorsque la liaison de données.Load
vient avantClick
donc, vous êtes d'écraser vos données, de toute façon.Ce faire:
Vous devez utiliser une source de données (comme ObjectDataSource) pour gérer la liaison de données et mise à Jour/Insert.
Mise à jour /conseiller:
En utilisant des paramètres de la liaison de données pour vous de s'attirer des ennuis. Vous devriez envisager d'utiliser une ListView, GridView, DataList ou d'un Répétiteur. Je suis sûr que l'un de ceux qui font ce que vous voulez et vous aurez de programme moins. Utilisez votre temps à apprendre au lieu d'essayer d'obtenir que cela fonctionne, ses vouée à l'échec.
Vérifier si vous avez vraiment DataBind() le DataList après chaque publication. Normalement, vous obtiendrez DataList, GridView, DropDownList (et d'autres Contrôles) vide après une Publication lorsque vous n'avez pas les lier à nouveau.