一. 目的:想通过datatable动态绑定datagrid,实现动态增加列(列数不定,行数不定),并且列中含有ComboBox下拉选项,用Enum定义范围,用户改变dataGrid时,可将数据传递给datatable,后台可根据datatable内容进行逻辑处理,均使用后台代码实现;
二. 当前效果:除去含有ComBoBox下拉菜单的列,其余可以实现更改dataGrid时,可将变化传递给datatable(如“序号”列的更改都会保留);
三. 未解决问题:1) 含有ComBoBox的列,默认为空,用鼠标左键点三次才能出现下拉菜单,可以选择;
2) 选择好ComBoBox列中的下拉菜单内容后,再次点击“增加Code”按钮,含有ComBoBox列的选择内容会被清空;
3)
对“序号”列进行升序或降序排列时,含有ComBoBox列的选择内容会被清空;
困扰了好久,恳请大神帮忙!!!
后台代码如下:
public partial class 效果定义 : Window
{
DataTable dt = new DataTable();
enum 效果
{
上升,
下降,
保持
};
public 效果定义()
{
InitializeComponent();
dt.Columns.Add(new DataColumn("序号", typeof(int)));
DataRow dr = dt.NewRow();
dr["序号"] = 1;
dt.Rows.Add(dr);
dataGrid.ItemsSource = dt.DefaultView;
dataGrid.AutoGenerateColumns = true;
}
private void 增加Code_Click(object sender, RoutedEventArgs e)
{
DataGridTemplateColumn column = new DataGridTemplateColumn();
int i = dt.Columns.Count;
dt.Columns.Add(new DataColumn("花样"+i.ToString(), typeof(效果)));
dataGrid.ItemsSource = null; //先解除绑定
dataGrid.ItemsSource = dt.DefaultView; //再次绑定
}
}
前台代码:
<Grid>
<Grid Height="244" VerticalAlignment="Top" Margin="10,10,10,0">
<DataGrid x:Name="dataGrid" Height="244" VerticalAlignment="Top" HorizontalAlignment="Left" Width="725" CanUserAddRows="True" />
</Grid>