2011-05-02 2 views
3

Dans le passé, j'ai utilisé jQuery Ajax pour créer un panier. Cette fois-ci, j'utilise le contrôle serveur de la vue liste.Récupération et mise à jour des valeurs de contrôle du serveur dans un ListView

Si j'ai une boîte de texte qté dans chaque ligne et que je veux mettre à jour la quantité sur un bouton, est-ce le moyen le plus élégant d'y parvenir?

protected void Button1_Click(object sender, EventArgs e) 
    { 
     foreach(ListViewItem item in ListViewCart.Items) 
     { 
      foreach (Control con in item.Controls) 
      { 
       if (con.GetType() == typeof(TextBox)) 
       { 
        //Do Work. 
       } 
      } 
     } 
    } 

Je devine que je besoin de stocker l'productID dans un attribut personnalisé pour chaque zone de texte et l'utiliser lors de la mise à jour de la base de données. (Ou écrivez plus de code pour trouver cette valeur ailleurs dans la ligne.)

Plus important encore, existe-t-il un autre contrôle de serveur que je pourrais utiliser à la place? Je ne veux pas utiliser le gridview.

+0

Si votre contenu est sous forme de tableau, GridView pourrait être plus facile de travailler avec. –

Répondre

2

Je suppose que vous pourriez raccourcissez un peu comme ce

foreach (TextBox txtBox in 
    ListViewCart.Items.SelectMany(item => item.Controls.OfType<TextBox>())) 
{ 
    //do work like - txtBox.Text = "foo"; 
} 
+0

Je reçois cette erreur: 'Impossible de lancer l'objet de type ' d__aa'1 [System.Web.UI.WebControls.TextBox]' pour taper 'System.Web.UI.WebControls.TextBox'.' –

+0

Pouvez-vous essayez 'SelectMany()' au lieu de 'Select()'? –

Questions connexes