2017-04-16 20 views
0

私は顧客の情報でdatagridviewを得ました。私はdatagridviewで表現していないバックグラウンドデータを持っています。私は、DataGridの選択された行に顧客IDを取得しようとします。このコードを使用しようとしましたが、DataGrid.SelectedItemをDataViewRowに変換する際にエラーが発生しました。c#wpf datagridview選択された行

ここは私のC#コードです。

private void searchPayment_btn_Click(object sender, RoutedEventArgs e) 
    { 
     DataRowView drv = (DataRowView)customerDataGrid.SelectedItem; 
     String result = (drv["customer_id"]).ToString(); 
     presenter.getSelecetedCustomerPayment(Convert.ToInt32(result)); 
    } 

デバッグモードでは、customerDataGrid.SelectedItemが正しいことがわかります。それは "customer_id"を含む私のすべてのデータを返します。

これは私のDataGridのXAMLコードです。

<DataGrid x:Name="customerDataGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="10,10,326,10" AutoGenerateColumns="False" IsReadOnly="True"> 
        <DataGrid.Columns> 
         <DataGridTextColumn Binding="{Binding tc_id_no}" Header="National ID"/> 
         <DataGridTextColumn Binding="{Binding firstname}" Header="Name"/> 
         <DataGridTextColumn Binding="{Binding lastname}" Header="Lastname"/> 
         <DataGridTextColumn Binding="{Binding group_name}" Header="Group"/> 
         <DataGridTextColumn Binding="{Binding birthdate}" Header="Birthdate"/> 
         <DataGridTextColumn Binding="{Binding parent_name}" Header="Parent Name"/> 
         <DataGridTextColumn Binding="{Binding phone_number}" Header="Phone"/> 
         <DataGridTextColumn Binding="{Binding email}" Header="Email"/> 
         <DataGridTextColumn Binding="{Binding gender}" Header="Gender"/> 
        </DataGrid.Columns> 
       </DataGrid> 

答えて

1

SelectedItemProperty戻ってあなたのDataGridの(最初の)現在選択されている項目。つまり、これはあなたのCustomerクラスのオブジェクト(thatsは私が想定するクラスの名前です)を意味し、DataRowViewなどはありません。選択したアイテムをキャストすると、Customerのプロパティを取得できます。あなたは何も選択された項目が不可能であるので、選択された項目がnullであるかどうかをチェックしなければならないことに注意してください。

Customer selectedCustomer = customerDataGrid.SelectedItem as Customer; 
if (selectedCustomer != null) 
{ 
    //Get the properties you need 
    string selectedCustomerId = selectedCustomer.Id; 
} 
0

これを試す: DataRowView行=(DataRowView)DataGrid.SelectedItems [0]。

0は、最初の交差点の最初の項目です。試行錯誤の方法でインデックスを取得して、インデックスを取得して、必要なインデックスを取得するまで続けます。

関連する問題