2017-06-23 1 views
0

Je suis dans un correctif ici les gars. Travailler sur un code existant et avoir besoin de faire des changements à l'intérieur des frontières.Boucle dans une grille pour trouver une colonne spécifique (pas dans les événements de grille)

Besoin de boucler à travers un Gridview (nouvellement créé) pour trouver la valeur d'une colonne spécifique. Et itérer à travers les lignes en utilisant un compteur existant (x) et un"existant foreach".

int x = 0; 

foreach (KeyValuePair<int, object> kvpValues in tjSelectFields.SectionList) 
{ 
    //This is the Code I've tried out. 
    //This is where any new changes are to be added 
    foreach (System.Web.UI.WebControls.GridViewRow row in grdReleaseUserPending.Rows) 
    { 
     //selectID = grdReleaseUserPending.Rows[x].Cells[1].Text; 
      selectID = row.Cells[0].Text; 
    } 
    //End of New Changes    

    branchID = ((TJSearchRecord)kvpValues.Value).FieldValues["BranchID"]; 
    acctNbr = ((TJSearchRecord)kvpValues.Value).FieldValues["AcctNbr"]; 
    txnSeqNbr = ((TJSearchRecord)kvpValues.Value).FieldValues["TxnSeqNbr"]; 

    txnsList = "'" + selectID + "|" + branchID + "|" + acctNbr + "|" + txnSeqNbr + "'"; 

    scriptTxnList.Append("oReleaseUserAuthPending.txnsList[" + x + "] = " + txnsList + ";\n"); 

    x++;     
} 

En fait ce que je dois faire est que je dois utiliser le incrémenteur existant (x) pour augmenter la ligne et obtenir les données de la première colonne pour chaque ligne.

Actuellement, le processus ne circule pas dans la nouvelle boucle foreach

Je vous aurais peut-être confondu les gars un peu avec l'explication, le cas échéant plus d'information est nécessaire s'il vous plaît laissez-moi savoir.

Besoin d'aide pour trouver une méthode pour le faire. PFA une capture d'écran de la grille de référence.

Screenshot of the Grid

Répondre

0

Il n'y a pas de données dans cette colonne, seule une case à cocher. Lorsque vous liez des données à un GridView, tous les types de données deviennent une chaîne (ou une case à cocher lorsqu'une colonne booléenne et autogénérée). C'est pourquoi vous devez boucler les données source et non le contenu GridView. Beaucoup de gens font cette erreur avec la décimale, la monnaie et les dates en essayant de récupérer ces types de données à partir d'une cellule. Texte.

Vous pouvez cependant ajouter DataKeyNames à GridView et les lire.

<asp:GridView ID="grdReleaseUserPending" runat="server" DataKeyNames="selectID"> 

Et puis lire la clé dans le code derrière

int cnt = 0; 
foreach (GridViewRow row in grdReleaseUserPending.Rows) 
{ 
    selectID = Convert.ToInt32(grdReleaseUserPending.DataKeys[cnt].Values[0]); 
    cnt++; 
} 
+0

Merci pour la réponse @VDWWD, mais le problème persiste encore. Le processus ne circule toujours pas dans la boucle foreach. :( – theLearner

+0

Ensuite, il n'y a pas de lignes dans 'grdReleaseUserPending' ou KeyValuePairs dans' tjSelectFields' Définissez les points d'arrêt et vérifiez – VDWWD

+0

Il y a 2 lignes dans la grille @VDWWD (comme vu dans l'instantané). the KeyValuePairs ... Double check it – theLearner