2009-11-17 3 views
1

J'ai un objet personnalisé comme suitConvert objet personnalisé Pour DataRowView C# WinForms

public partial class _AccessionType 
{ 
    private string accessionIdField; 
    private string docUrlField; 
    /// <remarks/> 
    public string AccessionId 
    { 
     get 
     { 
      return this.accessionIdField; 
     } 
     set 
     { 
      this.accessionIdField = value; 
     } 
    } 
    public string DocUrl 
    { 
     get 
     { 
      return docUrlField; 
     } 
     set 
     { 
      docUrlField = value; 
     } 
    } 
} 

L'objet ci-dessus est utilisé comme source de données pour DataGridView. Je souhaite convertir l'objet ci-dessus en DataRowView.

Comment puis-je le faire?

+0

+1 Bonne question –

Répondre

1

Vous devez créer une liste de _AccessionType et l'affecter à la propriété DataSource de la vue de grille.

List<_AccessionType> accessionTypes= new List<_AccessionType>();  
// Add objects to the list 
gridView1.DataSource = accessionTypes; 
gridView1.DataBind(); 

Dans le concepteur de gridView1, vous devez faire un clic droit> Modifier les colonnes et ajouter des colonnes liées. Pour chaque colonne liée donner une HeaderText appropriée et dans le DataField attribuer la propriété de membre requis de _AccessionType (par exemple docURL)

Vous ne pouvez pas récupérer l'objet de gridView.DataSource retour dans la liste < _AccessionType> ou même de la GridViewRow dans _AccessionType. Pour que les valeurs d'une vue de grille s'affichent, vous devez définir des clés de données dans la vue de grille pour les valeurs que vous devez récupérer.

par exemple.

<asp:GridView ID="gridView1" runat="server" 
      AutoGenerateColumns="False" DataKeyNames="AccessionId, DocUrl" EnableViewState="true"> 
... 
</asp:GridView> 

plus tard dans le code, vous pouvez récupérer de nouveau ces valeurs lorsque vous boucle à travers la grille de données ou dans un gestionnaire d'événements de grille de données connexes:

foreach (GridViewRow accessionRow in this.gridView1.Rows) 
{ 
    int accessionID = Convert.ToInt32(gridView1.DataKeys[accessionRow.RowIndex]["AccessionId"]); 
} 
+0

Thats ce que je fais. Mais quand j'essaye de le mouler à DataRowView DataRowView drv = (DataRowView) gridView1.ListObject; son lancer une exception de cast – Sandhurst

+0

Vous ne pouvez pas récupérer le DataSource du gridview dans votre objet. Au lieu de cela, vous pouvez définir DataKeys dans la grille et accéder à ces valeurs à partir des lignes. –

+0

J'ai édité ma réponse pour montrer comment vous pouvez accéder à l'objet à partir de la ligne de la grille. –

Questions connexes