2015-10-28 2 views
0

Notre application asp.net WebForms utilise des adaptateurs de table pour les "tables de données fortement typées" et les lignes de données. Dans le code-behind je trouve que je ne peux pas utiliser la valeur de retour directement à partir de l'instance de classe BLL (comme notre "Main_TblAdap.CostDataTable") comme en faisant référence aux lignes de données fortement typées et aux colonnes/champs à l'intérieur.Comment utiliser "table de données fortement typée" (ou "row") dans WebForms code-behind?

Quelle est la bonne façon de faire usage de la table de données ou de la ligne de données fortement typée dans le code derrière les événements et les méthodes?

En outre, nous souhaitons pouvoir référencer une ligne de données spécifique ou trier/filtrer la table de données. Un bon exemple de codage serait très utile montrant la meilleure façon de (1) obtenir à partir d'un tableau de données fortement typé à des valeurs de référence dans une ligne de données spécifique à partir de la table de données et (2) comment trier/filtrer la table de données fortement typée.

Répondre

0

Créez d'abord une DataView à partir de la table. Vous pouvez soit personnaliser l'affichage à l'initialisation, soit appeler l'option par défaut.

DataView dv = yourTable.DefaultView; 

Ou aller de l'avant et filtrer la vue de la table lorsque vous créez votre pointeur de référence comme ceci:

DataView custDV = new DataView(YourTable[yourTableName], 
"VehicleID = 'xxx'", // Row filter 
"VehicleID", // Sort 
DataViewRowState.CurrentRows); 

Maintenant, vous pouvez trier la vue et le filtre par ligne état

dv.Sort(); 
view.RowStateFilter = DataViewRowState.Added | 
    DataViewRowState.ModifiedCurrent; 

RANGS. Vous pouvez interagir avec DataRowView IEnumerable dans DataView.

foreach (DataRowView rowView in thisDataView) 
{ 
    // your code here 
} 

OU

foreach(DataRow r in dt.Rows) 
    { 
    // your code here 
    } 

Pour trouver des lignes dans l'essai de table:

var result = dt.AsEnumerable().Select(r => r["Id"] = 4); 

    if(result !=null) 
    { 
     int x = 0; 
    } 

Maintenant, il suffit lier à votre point de vue et si vous ajoutez une ligne ou mettre à jour, la vue est mise à jour ainsi que.

+0

Nous vous remercions de votre réponse. –

+0

Merci pour votre réponse. Cependant, je ne vois pas la relation entre les variables et les exemples. Par exemple: pour le tri, qu'est-ce que 'view'; est-ce "dv"? sinon, qu'est-ce que "view"? Je ne suis pas sûr de ce qui est filtré ou trié? Que faire si je veux filtrer par "VehicleID = 555"? AUSSI, dans le "// votre code ici", les champs sont fortement typés comme dans "r.InitialDate" - comment les champs sont-ils référencés? Dans le dernier exemple, qu'est-ce que "dt"? - la table fortement typée "yourTable"? ou qu'est-ce que c'est? Merci. –

+0

Vous créez le pointeur dv en utilisant votre table: DataView dv = yourTable.DefaultView; Une fois que vous avez votre référence dv, vous pouvez interagir avec lui pour trier en utilisant dv.Sort(); Qui a quelques surcharges. Vous pouvez également mettre à jour les lignes de la table de données et la vue reflétera cela. – Kentonbmax