从WPF中的GridView检索所选行中的值

3

我是一名WPF新手。

我正在尝试将选定行的值检索到相应文本框中。

在Windows应用程序中,我通常会像这样处理:

txtPartyCode=gv.SelectedRows[0].Cells[1].Value.ToString();

但我很困惑,如何在WPF中实现呢?
我尝试了以下方法:
txtPartyCode.Text=gvCust.SelectedItem[0]

但是,在代码下方出现了红色的工具提示:无法将[]应用于类型为object的表达式。

请帮忙解决。如何在WPF中实现?


首先,不存在所谓的“普通Windows应用程序”。我假设你是在谈论Winforms。你考虑过使用Binding吗? - DHN
gv.ItemsSource 的类型是什么? - JSJ
3个回答

4

我有点困惑,你的数据类型是什么?你传递给DataGrid的ItemsSource属性的数据类型是什么。

如果你使用的是DataTable,并将其传递给DataGrid,则下面的代码适用于您。

void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {                   
            DataRowView rowview = dataGrid1.SelectedItem as DataRowView;
            if (rowview != null)
            {
             textbox1.Text=  rowview.Row.ItemArray[0].ToString();
            }            
        }

如果您正在使用Typed object作为DataGrid的itemsSource属性,例如员工列表,则可以按照以下步骤操作。
 Employee emp  = dataGrid1.SelectedItem as Employee
if(emp !=null)
{
textBox1.Text =  emp.Name;
}

1
 private void YourGridName_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {               
          string fc = null;                   
          foreach (var item in e.AddedCells)
           {                        
            fc =((System.Data.DataRowView(item.Item)).Row.ItemArray[0].ToString();
           }
         }

当选择某一行时,该事件会被触发吗? - Freelancer
在您的数据网格设计器上,转到属性-事件并添加事件。 - apomene
错误 2 'System.Data.DataRowView' 是一个“类型”,在给定的上下文中无效 E:\WPFTuts\NewSoftWCF\NewSoftWCF\MainWindow.xaml.cs 103 19 NewSoftWCF - Freelancer
错误 2 'System.Data.DataRow' 是一个“类型”,在给定的上下文中无效 E:\WPFTuts\NewSoftWCF\NewSoftWCF\MainWindow.xaml.cs 103 24 NewSoftWCF - Freelancer

0
您可以尝试添加一个DataGrid SelectionChanged事件的处理程序,如下所示:
private void dataGrid1_SelectionChanged(object sender, RoutedEventArgs e)
{
       DataRowView rowview = gv.SelectedItem as DataRowView;
       string textNeeded = rowview.Row[0].ToString();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接