2016-04-02 14 views
0

私はWPF初心者です。私はDataRow/DataRowViewでDatagrid Selected Itemsを読み込もうとしています。私のコードはWPFでAnonymousType型のオブジェクトをSystem.Data.DataRowViewにキャストできません

foreach (System.Data.DataRowView row in dgDocument.SelectedItems) 
    { 
    txtPhotoIDNo.Text = row["PhotoIdNumber"].ToString(); 
    } 

following--ですが、私が直面しています以下のタイプ 「<> f__AnonymousTypeb 11[System.String,System.Byte,System.String,System.String,System.String,System.Byte[],System.Nullable 1 [可能System.DateTime]、システムのオブジェクトをキャストすることerror--

」できません。 String、System.Nullable`1 [System.DateTime]、System.String、System.String] ''に 'System.Data.DataRowView'を入力してください。 "問題は、私はデータグリッド列の位置を変更/新しい列を追加するために必要なときに、私は全体のインデックスを変更するために必要である微

(dgDocument.SelectedCells[2].Column.GetCellContent(item) as TextBlock).Text; 

を作品

私は道を以下にしようとしています、割り当てられた値。この問題をカバーするために、私は列名で上記の方法で値を割り当てる必要があります。

+1

'DataGrid'コントロールは' System.Data'/'DataTable'とは何の関係もありません。' SelectedItems'プロパティには、あなたが追加した実際のオブジェクトが含まれていますグリッド(この場合、匿名型のように見えます)。データバインディングを調べる必要があります。このようにテキストを直接設定しないでください。 –

+0

してください!私に例を挙げてください。 –

答えて

1

SelectedItemsリストの内容は、DataGridにバインドされている型になります。だから、例えば、私は私の分離コード内のプロパティリストのデータソースを持っていると私は、データグリッドののItemsSourceになるこのリストをバインドする場合:

<DataGrid x:Name="grid" ItemsSource={Binding DataSource) /> 

grid.SelectedItemsは私に文字列のリストを返します。

DataGridのItemsSourceは、ある種の匿名型にバインドされています。私は一般的に、この特定のケースでは匿名型を使用してから思いとどまらだろうが、あなたのための回避策は、次のようになります。

foreach (dynamic item in dgDocument.SelectedItems) 
    { 
    txtPhotoIDNo.Text = Convert.ToString(item.???); 
    } 

あなたが代用する必要があるの?あなたがtxtPhotoIDNoに入れたいと思っているデータを含んでいる匿名クラスのプロパティの名前です。

0

私は自分の問題を発見しました。つまり、私のSelectedItemsの2つの値はnullです。この理由から、キー値のペアは完全には準備できません。次のコードは完全に機能します。私の場合行の

foreach (System.Data.DataRowView row in dgDocument.SelectedItems) 
    { 
    txtPhotoIDNo.Text = row["PhotoIdNumber"].ToString(); 
    } 
0
foreach (dynamic row in dgBarDetails.ItemsSource) 
{ 
    myList.Add(row); 
} 

のItemsSourceを移入するために使用される私のクラスのオブジェクトです。それはintや文字列、ItemsSourceにあるものでもかまいません。

関連する問題