wpf的datagrid绑定datatable列不自动更新
描述如下:
想利用程序实现显示NORTHWND.MDF中的所有表。listbox显示数据库中的表清单,选中listbox里面的一项以后,在datagrid中显示表的内容。
xaml如下:
Grid.Column="1" ItemsSource="{Binding Mode=OneWay}" Name="dataGrid1" Grid.RowSpan="2">
代码如下:
private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (listBox1.SelectedIndex > -1)
{
DeleteCurrentTable();
DataRowView dr = listBox1.SelectedItem as DataRowView;
string tableName = string.Format("[{0}]", dr["Name"].ToString()) ;
string commandString = "SELECT * FROM " +tableName;
using (connection = new SqlConnection(connectionString))
{
command = new SqlCommand(commandString, connection);
SqlDataAdapter adapter = new SqlDataAdapter();
connection.Open();
adapter.SelectCommand = command;
adapter.Fill(dataTableCurrent);
dataGrid1.DataContext = dataTableCurrent;
}
}
}
现在遇到的问题是datagrid中的列并不会随着dataTableCurrent的列进行更新。
在代码里面清空dataTableCurrent的所有列以后
dataTableCurrent.Clear();
while (dataTableCurrent.Columns.Count > 0)
dataTableCurrent.Columns.RemoveAt(0);
界面显示如下:
为什么datagrid的列不随着datatablecurrent的列进行更新呢?
请帮忙看下,谢谢!
------解决方案--------------------
你应该设置绑定数据集合为ObservableCollection这样才会自动更新前台。
参考:
http://www.cnblogs.com/chengxingliang/archive/2011/07/18/2108732.html