如何获取WPF Datagrid ItemsSource表的名称

时间:2017-01-03 13:01:30

标签: wpf

我的数据网格用于显示来自2个表的数据,(独立地)基于用户对所需数据的选择。如何获取当前用作网格的ItemsSource的表的名称?

2 个答案:

答案 0 :(得分:1)

如果已将DataGrid的ItemsSource属性设置或绑定到DataTable的DataView,则可以将其强制转换回DataView,并从DataView的Table属性的TableName属性中获取该表的名称,如下所示:

DataView dv = dg.ItemsSource as DataView;
if(dv != null && dv.Table != null)
{
    MessageBox.Show(dv.Table.TableName);
}

完整样本:

<强> MainWindow.xaml.cs:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataTable dt = new DataTable() { TableName = "t1" };
        dt.Columns.Add(new DataColumn("Name"));
        dt.Rows.Add("Donald Duck");
        dg.ItemsSource = dt.DefaultView;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        DataView dv = dg.ItemsSource as DataView;
        if (dv != null && dv.Table != null)
        {
            MessageBox.Show(dv.Table.TableName);
        }
    }
}

<强> MainWindow.xaml:

<DataGrid x:Name="dg" />
<Button Content="Get" Click="Button_Click" />

答案 1 :(得分:0)

您应该改为从ItemsSource创建一个数据表。

DataTable dv = dg.ItemsSource as DataTable;
if(dv != null && dv.Table != null)
{
    MessageBox.Show(dv.Table.TableName);
}