2009-03-01 2 views

Répondre

5

Vous n'avez pas besoin d'une table de données pour lier - vous avez juste besoin de quelque chose comme une liste/énumérable. Par exemple, si vous connaissez le numéro de la ligne:

DataRowView row = dt.DefaultView[1]; // second row 
detailsView1.DataSource = new DataRowView[] {row}; 
detailsView1.DataBind(); 

Notez que nous devons utiliser DataRowView (plutôt que DataRow) afin d'obtenir les propriétés d'exécution uniquement (à savoir les données de colonnes). Si vous avez un DataRow, cette approche pourrait facilement être enveloppé dans une méthode utilitaire, par exemple une méthode d'extension:

public static DataRowView[] ForBinding(this DataRow row) 
{ 
    foreach (DataRowView rowView in row.Table.DefaultView) 
    { 
     if (ReferenceEquals(rowView.Row, row)) 
     { 
      return new DataRowView[] { rowView }; 
     } 
    } 
    throw new ArgumentException("Row not found in the default view", "row"); 
} 

avec:

detailsView1.DataSource = row.ForBinding(); 
detailsView1.DataBind(); 
+0

Revenir à Web Forms me rappelle à quel point elles sont douloureuses. Je suis tellement content d'avoir déménagé à MVC. – Jason

1

oui, il est le moyen le plus simple :)

à mon humble avis, si vous voulez N'affiche que 1 champ, vous pouvez utiliser des paramètres de sortie, mais si vous affichez plus d'un champ dans une vue détaillée, c'est le plus simple.

+0

plusieurs champs ... mais merci quand même :) Après – akosch

+0

sélectionner un datatable, le filtrer est plus simple? – Canavar

Questions connexes