2011-07-05 17 views
3

DataGridに匿名型のリストがあり、これは整数である最初の値(EmployeeId)を取得する必要があります。匿名オブジェクトから値を取得

アプリケーションをコンパイルすると、変数(selectedEmployee)に課金された値が表示されます。このような

selectedEmployee = 
{ 
    EmployeeId = 402350236, 
    OperatorNum = 12, 
    StateName = "Active", 
    Name = "Robert", 
    LastName = "Tedd Zelaya", 
    Password = "abcd", 
    DateBegin = {13/07/2011 0:00:00}, 
    DateEnd = {23/07/2011 0:00:00}, 
    Telephone = "8869-2108", 
    Address = "Santa Barvara" 
    ... 
} 

これは私のコードがあるときに、グリッド内のアイテムをユーザーclicクリック。

var selectedEmployee = _employeedataGrid.CurrentCell.Item; 

また、私はこれを試してみてください。

DataRowView dataRowView = _employeedataGrid.CurrentCell.Item as DataRowView; 
      var idEmployee = 0; 
      if (dataRowView != null) 
      { 
       idEmployee = Convert.ToInt32(dataRowView.Row[0]); 
      } 

しかしdataRowViewは常にNULLです。動作しません...

どうすればそのオブジェクトから最初の値を取得できますか?

+0

この情報は役に立ちましたか?その場合は、解決策 – cordialgerm

答えて

0

CurrentCell.Itemは、DataRowViewではなく匿名型のオブジェクトであるため、DataRowViewはnullです。 as演算子は、LHSをRHSで指定された型にキャストします。項目をRHSにキャストできない場合はnullを戻します。

CurrentCell.Itemは匿名型なので、キャストしてEmployeeIdを取得することはできません。私は望ましいプロパティ(それをEmployeeクラスと呼ぶ)を持つクラスを作成し、それらの従業員のコレクションにあなたのDataGridをバインドすることをお勧めします。そして、あなたは

var selectedEmployee = (Employee)_employeedataGrid.CurrentCell.Item; 
int? selectedId = selectedEmployee == null? (int?)null : selectedEmployee.EmployeeId; 
4

グリッド内の項目がDataRowView年代ではありません、彼らは匿名であると言えるでしょう。反射を使用するか、またはdynamicを使用する必要があります。

dynamic currentItem = _employeedataGrid.CurrentCell.Item; 
int idEmployee = currentItem.EmployeeId; 

一方、厳密に型指定されたオブジェクトを使用した方がよいでしょう。クラスを作成するか、Tuple(またはその他)を使用します。

+0

を受け入れてください。強く入力されています:) –

関連する問題