c# wpf datagridview 选定行

c# wpf datagridview selected row

我得到了一个包含客户信息的数据网格视图。我有我不代表在 datagridview 上的背景数据。我尝试在数据网格中的选定行上获取客户 ID。我尝试使用此代码,但在将 datagrid.SelectedItem 转换为 DataViewRow.

时出错

这是我的 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 是正确的。它 returns 我的所有数据,包括 "customer_id"。

这是我的数据网格的 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>

SelectedItemProperty returns 您 DataGrid 当前选择的(第一个)项目。这意味着这是您的 Customer class 的对象(我想那是 class 的名称)而不是 DataRowView 或类似的东西。如果您投射所选项目,您可以简单地获得 Customer 的任何属性。请注意,您必须检查所选项目是否为空,因为不可能有任何所选项目:

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

试试这个: DataRowView 行 = (DataRowView)DataGrid.SelectedItems[0];

0是第一个交集的第一项,尝试通过试错法获取索引,继续玩索引,直到得到你想要的索引。