2009-09-24 3 views
0

Deux problèmes m'empêchent actuellement de terminer correctement deux projets. Je vais les mettre tous les deux ici car je crois qu'ils sont connectés au cycle de vie de la page asp.net, mais je ne peux pas les contourner.Problèmes de liaison de données avec la publication

D'abord j'ai une DropDownList que je dois trier dans codebehind. Il ne contient que du texte, donc je devrais être en mesure de le faire avec la méthode suivante appelée à chargement de la page:

 
     Dim alist As ArrayList = New ArrayList 

     For Each litem As ListItem In ltEsittelyDropDownList.Items 
      alist.Add(litem.Text) 
     Next 

     alist.Sort() 

     Dim uusiDDList As New DropDownList 

     For i As Integer = 0 To alist.Count - 1 
      Dim litem As New ListItem 
      litem.Text = alist(i).ToString 
      litem.Value = alist(i).ToString 
      uusiDDList.Items.Add(litem) 

      ' Response.Write(alist(i).ToString) 
     Next 

     ltEsittelyDropDownList = uusiDDList 
     ltEsittelyDropDownList.DataBind() 

Comme vous pouvez le voir, il y a un response.write commenté là-dedans, ce qui montre la liste est en fait trié . Alors pourquoi, quand je charge la page, ne puis-je voir aucun effet?

L'autre problème, ce qui est plus critique et difficile, est la suivante:

Dans la page ASPX Je suis la liaison d'un SQL Server 2005 à une source de données GridView. Et dans le code-behind, je m'intéresse à l'événement RowDataBound dans lequel je gère des liens et des propriétés dans les cellules gridviews. Mais je ne peux pas obtenir cela pour travailler sur le premier chargement de la page, seulement après la première publication supplémentaire.

Alors, que faire? Et merci pour tous les conseils en face!

Répondre

1

Votre premier problème consiste à appeler DataBind sur un contrôle que vous avez renseigné manuellement. Vous avez probablement un DataSource spécifié dans la déclaration de contrôle, qui est utilisé lorsque DataBind est appelé. Vous pouvez simplifier le code en ajoutant simplement les éléments de liste au contrôle d'origine:

For i As Integer = 0 To alist.Count - 1 
    ltEsittelyDropDownList.Items.Add(New ListItem(alist(i).ToString()) 
Next 

Sinon, comme vous avez une collection déjà, vous pouvez simplement lier au contrôle:

ltEsittelyDropDownList.DataSource = alist 
ltEsittelyDropDownList.DataBind() 

Pour votre deuxième problème, un exemple de code aiderait - en particulier, où et comment le contrôle est databound et le code dans RowDataBound.

+0

Heh, une erreur. J'ai utilisé votre première suggestion et cela a bien fonctionné. Merci beaucoup! – Zan

Questions connexes