2016-04-07 2 views
1

Je suis très nouveau à WPF et je veux faire un formulaire de saisie de données avec Datagrid contrôle. Je suis coincé avec, comment obtenir la valeur des données de la cellule pour les stocker dans la base de données?Comment obtenir la valeur de données de cellule de Datagrid dans WPF?

Comme dans les fenêtres, nous avions l'habitude de passer par gridview1.Rows[0].Cells[0].value.

comment l'obtenir dans WPF?

Répondre

-1

Vous pouvez obtenir en utilisant le code suivant.

public void DataGridCellValue(object param) 
    { 
     string clipboard = string.Empty; 
     if (param != null) 
     { 

      if (param is DataGridCell) 
      { 
       DataGridCell cell = (DataGridCell)param; 
       dynamic column = cell.Column as DataGridTextColumn; 

       if (cell.Column is DataGridTextColumn) 
        column = cell.Column as DataGridTextColumn; 

       if (cell.Content is TextBlock) 
       { 
        TextBlock tBlock = cell.Content as TextBlock; 
        clipboard = string.IsNullOrEmpty(tBlock.Text) ? string.Empty : tBlock.Text.Trim(); 
       } 
      } 
      else if (param.GetType().IsValueType) 
      { 
       clipboard = param.ToString(); 
      } 
     } 
    } 

    #endregion 
} 

public ICommand DataGridCellValue 
    { 
     get 
     { 
      return new DelegatingCommand((object param) => 
      { 
       new Action(() => 
       { 
        DataGridCopyToClipBoard(param); 
       }).Invoke(); 
      }); 
     } 
    } 

Utilisez la reliure comme comme dans votre WPF XAML

"{Binding CurrentCell, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}}" 

Le commandement et de CommandParameter sont

Command="{Binding DataGridCellValue}" 
CommandParameter="{Binding CurrentCell, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}}" 
-1

Si vous êtes nouveau WPF puis passer par ces deux liens ci-dessous pour commencez et comprenez comment cela est fait dans WPF:

  1. Binding in WPF

  2. DataGrid Data Binaing

En bref, vous n'a jamais vraiment à faire gridview1.Rows[0].Cells[0].value à WPF, au contraire, vous pouvez lier votre grille à une source de données. et puis essayer d'obtenir les valeurs de la collection datasource (si vous n'êtes pas à la recherche spécifique interface utilisateur comme: cellule 0 de la ligne 0, etc.).

+0

Je voulais un Datagrid blanc pour l'utilisateur de données d'entrée et puis enregistrez dans la base de données. Pour cela, j'ai lié le Datatable vide à Datagrid et j'ai laissé quelques textboxes pour l'entrée User et 1 bouton qui va ajouter des valeurs de textbox à la grille. et pour l'enregistrement, j'ai assigné datacontext de datagrid à Datatable et ai fait l'effort supplémentaire sur le Datatable lui-même qui a jeté des données à la base de données. Maintenant s'il vous plaît dites-moi .. est-ce une bonne pratique pour WPF ???? J'en doute. –

+0

@AeshaPatel bien que vous ayez donné cette description, j'ai de nombreuses questions comme pourquoi l'utilisateur entre des valeurs dans la zone de texte, et ensuite vous utilisez l'événement d'un bouton pour remplir la grille avec ces valeurs. ne pouvez-vous pas simplement entrer un texte dans la grille elle-même? De plus, vous n'avez pas besoin d'assigner quoi que ce soit à datatable, il vous suffit de lier votre table de données en tant que grille d'éléments et toute nouvelle donnée dans la grille sera reflétée dans votre datatable, aucun code explicite n'est requis pour cela dans WPF. Je serai en mesure de vous dire mieux si vous me donnez du code aussi. –