wpf中的Datagrid绑定具有一个静态列,其余为动态列
我正在WPF上工作,在那里我必须绑定datagrid。我尽力解释我的问题,如果有任何疑问,请询问 我可以使用以下代码绑定datagrid: XAML视图:wpf中的Datagrid绑定具有一个静态列,其余为动态列,wpf,dataset,Wpf,Dataset,我正在WPF上工作,在那里我必须绑定datagrid。我尽力解释我的问题,如果有任何疑问,请询问 我可以使用以下代码绑定datagrid: XAML视图: <DataGrid Height="257" HorizontalAlignment="Left" Margin="20,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="Auto"></DataGrid> dataGrid1.ItemsSource=
<DataGrid Height="257" HorizontalAlignment="Left" Margin="20,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="Auto"></DataGrid>
dataGrid1.ItemsSource=dataset.Tables[0].DefaultView;
ataGrid1.DataContext=dataset.Tables[0]
这段代码为我提供了一个网格,其中包含从数据库传递的默认列名
但问题是,在我的应用程序中,我有一个组合框,我必须从中选择列名称,如column1、column2。基于此选择,我必须仅将datagrid与这些列绑定,但在所有情况下,我希望我的staticcolumn显示修改后的名称日期记录,其余选定列使用默认名称
谢谢就我个人而言,我宁愿使用 但是,您需要做的是基于组合框中每个项目的单独查询 比如:
public string SelectedComboboxItem
{
get
{
return _selectedComboboxItem;
}
set
{
_selectedComboboxItem = value;
OnPropertyChanged(SelectedComboboxItem);
SqlDataAdapter da;
select (_selectedComboboxItem)
{
case "Column 1":
da = new SqlDataAdapter("select staticcolumn,column from TBL_SENSORS", connection);
case "Column 2":
da = new SqlDataAdapter("select staticcolumn,column2 from TBL_SENSORS", connection);
//All the other queries go here
}
DataSet ds = new DataSet();
da.Fill(ds, "SensorZones");
dataGrid1.ItemsSource = dataset.Tables[0].DefaultView;
dataGrid1.DataContext = dataset.Tables[0];
}
}
因此,将组合框的选定项绑定到此属性(需要实现),然后每个选择都应该有不同的数据源。不幸的是,这应该会重置datagrid,所以我不确定这是否是您想要的
或者,如果只想使列不可见,您可以创建一个转换器并将组合框的selecteditem绑定到columns的visibility属性。为什么要使用数据适配器?你的目标是c#的旧版本吗?嗨@ExitMusic,这只是为了测试,这就是为什么我要使用它。你对这个解决方案有什么想法吗?它是否按照你想要的方式工作?不完全是,但我有一个想法,并且已经这样做了,如果可能的话,我还将添加我的代码
public string SelectedComboboxItem
{
get
{
return _selectedComboboxItem;
}
set
{
_selectedComboboxItem = value;
OnPropertyChanged(SelectedComboboxItem);
SqlDataAdapter da;
select (_selectedComboboxItem)
{
case "Column 1":
da = new SqlDataAdapter("select staticcolumn,column from TBL_SENSORS", connection);
case "Column 2":
da = new SqlDataAdapter("select staticcolumn,column2 from TBL_SENSORS", connection);
//All the other queries go here
}
DataSet ds = new DataSet();
da.Fill(ds, "SensorZones");
dataGrid1.ItemsSource = dataset.Tables[0].DefaultView;
dataGrid1.DataContext = dataset.Tables[0];
}
}