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是第一个交集的第一项,尝试通过试错法获取索引,继续玩索引,直到得到你想要的索引。
我得到了一个包含客户信息的数据网格视图。我有我不代表在 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是第一个交集的第一项,尝试通过试错法获取索引,继续玩索引,直到得到你想要的索引。