2017-04-16 96 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的(第一)當前選擇的項目。這意味着這是你類的一個對象(這就是我想要的類的名字),沒有DataRowView或類似的東西。如果您投射選定的項目,您可以簡單地獲得您的Customer的任何屬性。請注意,您必須檢查所選擇的項目是零,因爲沒有選擇的項目是可能的:

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是第一個交集中的第一個項目,嘗試通過試錯方法獲取索引,繼續播放索引,直到獲得所需的索引。