2010-07-22 5 views
2

J'ai le code suivant qui me donne le nombre de lignes dans un gridview lié à une source de données d'objet.ods_Selected Row Count

protected void odsProduct_Selected(object sender, ObjectDataSourceStatusEventArgs e) 
     { 
      lblHowManyRows.Text = ((List<tblProduct>)e.ReturnValue).Count.ToString(); 

Belle.

Cependant, comment procéder pour faire essentiellement le même nombre mais avant que la source de données d'objet produise la sortie gridview?

Ce que je suis en train de faire est de donner à l'utilisateur la possibilité de vérifier le nombre de lignes seraient retourné avant de créer réellement le gridview (lié à la source de données objet)

Y at-il quelque chose qui se trouve dans les ods ou devrais-je juste écrire une autre déclaration linq et le lier à cela?

Toutes mes excuses pour mon ignorance

Répondre

0

Eh bien, vous pourriez avoir un événement OnSelecting comme celui-ci:

protected void OnSelecting(object sender, ObjectDataSourceSelectingEventArgs e) 
    { 
     if (lblHowManyRows.Text == string.Empty) 
     { 
      e.Cancel = true; 
      lblHowManyRows.Text = [Linq statement here].Count().ToString(); 
     } 
    } 

où il définit l'étiquette au comte la première fois, et récupère les données la prochaine fois .

La prochaine fois que les lblHowManyRows ne seront pas vide, donc ça va le faire à votre méthode odsProduct_Selected:

 protected void odsProduct_Selected(object sender, ObjectDataSourceStatusEventArgs e) 
    { 
     lblHowManyRows.Text = string.Empty; 
    } 

Blank sur l'étiquette afin que l'utilisateur peut continuer à sélectionner. De cette façon, la première fois qu'ils cliquent, ils obtiennent seulement le compte et la prochaine fois qu'ils cliquent, ils obtiennent la totalité de la grille.

Si c'était moi, j'obtiendrais probablement le compte complet via AJAX/webservice sans faire de postback ou en utilisant le gridview du tout, mais je ne connais pas le contexte complet de la question.