2012-06-15 8 views
1

Je suis nouveau dans asp.net et essaye de tirer les valeurs de Sqlserver dans un listView (asp.net). Dans codebehind, je veux parcourir toutes les lignes et tirer les valeurs des cellules pour columnX si une case dans rowY est cochée. J'obtiens une erreur de compilation sur le code suivant mais je n'arrive pas à comprendre le problème. Je peux obtenir des valeurs de cellules à partir de GridView mais pas de ListView.Itérer les valeurs des cellules listview

while (i < WOListView.Items.Count) { 
    CheckBox cbCell = (CheckBox)WOListView.Items[i].FindControl("CheckBox1"); 
    if (cbCell.Checked) { 
     if (WOListView.Items[i].SubItems[1].Text == "WO") { 
     do stuff... 
     } 
    } 
} 

Et le code d'erreur résultant:

CS1061: 'System.Web.UI.WebControls.ListViewDataItem' ne contient pas de définition pour '' et SubItems aucune méthode d'extension 'SubItems' accepter un premier argument de type 'System.Web.UI.WebControls.ListViewDataItem' peut être trouvé

Existe-t-il une autre façon de procéder? Est-ce que SubItems n'est pas supporté?

+0

ce qui est recherché par '.SubItems [1] .Text'. – Rab

Répondre

1

Il n'y a pas de sous-éléments dans listview. Si je ne me trompe pas, vous cherchez un contrôle à l'intérieur de listview

while (i < WOListView.Items.Count) { 
    CheckBox cbCell = (CheckBox)WOListView.Items[i].FindControl("CheckBox1"); 
    if (cbCell.Checked) { 
     Label somelabel = (Label)WOListView.Items[i].FindControl(“someLabel”); 
     //if (WOListView.Items[i].SubItems[1].Text == "WO") { 
     if (somelabel.Text == "WO") { 
     do stuff... 
     } 
    } 
} 
+0

Merci pour le code, cela fonctionne pour mes étiquettes et champ caché. Pour une raison quelconque, je n'arrive pas à l'utiliser avec TextBox. 'TextBox gqL = (TextBox) WOListView.Items [i] .FindControl (" GOOD_QTY ")' J'obtiens une erreur de référence d'objet lorsque j'utilise 'string gq = gqL.Text;' Pourquoi cela se produirait-il uniquement pour les zones de texte? ? – JasonD

+0

Scratch cette question, je l'ai eu le travail ... J'appelais un nom de variable incorrect. Merci! – JasonD

0

Est-ce que les SubItems ne sont pas supportés ??

Non, c'est pourquoi vous obtenez l'erreur de compilation.

Il me semble que vous pouvez chercher quelque chose comme ceci:

while (i < WOListView.Items.Count) { 
    CheckBox cbCell = (CheckBox)WOListView.Items[i].FindControl("CheckBox1"); 
    if (cbCell.Checked) { 
     if ((WOListView.Items[i].Controls[1] as Label).Text == "WO") { 
     do stuff... 
     } 
    } 
} 

Notez le as Label. En supposant que vous essayez de vérifier si un contrôle Label dans votre ligne ListView a le texte "WO". Cela peut très bien être un type de contrôle différent.

Questions connexes