2013-08-28 2 views
2

ok donc en C#.NET 4.5 et en utilisant un DataGridévénement RowEditEnding obtenir des valeurs nulles

J'ai mon DataGrid lié à un ADO.Net DataEntity. Maintenant, si je mets en surbrillance une ligne existante dans le Datagrid et appuie sur un bouton que j'ai l'exécution du code suivant: IList rows = DataGrid.SelectedItems; je peux parcourir le code et voir le IList rempli avec les bonnes valeurs.

mon DataGrid est lié dans le XAML comme ItemsSource="{Binding}" et chaque colonne de la grille de données est liée à une colonne dans l'entité comme tel: Binding="{Binding Path=InventoryName, Mode=TwoWay}"

et dans le code derrière je mets à l'aide d'une requête LINQ à l'entité cadre comme celui-ci:

var fillList = (from g in MyDataEntities.Table1 
      where g.OnLIst == true 
      orderby g.InventoryName 
      select g); 
DataGrid.ItemsSource = fillList.ToList(); 

ce que je dois faire est double: l'événement RowEditEnding remplir IList avec les Vales de la ligne. Une fois qu'il est peuplé, j'ai besoin d'accéder aux entrées individuelles dans le IList. En testant et en faisant défiler le code, je pense que mon problème est que lorsque j'entre une ligne vide, il n'a pas mis à jour l'entité lorsque l'événement RowEditEnding a été déclenché. Je pense que cela parce que quand je passe en revue le code et développez le IList toutes les valeurs dans lui sont nulles. Dois-je faire quelque chose pour mettre à jour l'entité avant de remplir le IList?

Une fois rempli, comment puis-je accéder aux valeurs individuelles? lorsque j'essaie de remplir une variable en utilisant une instruction foreach, tout ce qu'il affiche la valeur comme: Namespace.TableName

Répondre

0

Essayez celui-ci, Il peut être utile à votre question.

List<Table1> TestCollection = new List<Table1>(); 

public void BindData() 
{ 
    TestCollection = MyDataEntities.Table1.Where(x=>x.OnLIst == true).ToList(); 
    DataGrid.ItemsSource = TestCollection; 
} 

puis vous pouvez accéder à vos données chacune par une sélection sur le Datagrid.

private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Table1 NewTable = TestCollection[DataGrid.SelectedIndex]; 
}