我的数据网格用于显示来自2个表的数据,(独立地)基于用户对所需数据的选择。如何获取当前用作网格的ItemsSource的表的名称?
答案 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);
}