使用Datatable作为数据源动态绑定datagird, ComboBox选择后不更新到DataTable中

weixin_38048154 2016-08-31 03:26:45
一. 目的:想通过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>





...全文
3 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复

还没有回复,快来抢沙发~

相关推荐
发帖
其他技术讨论专区
创建于2021-05-12

97

社区成员

其他技术讨论专区
申请成为版主
帖子事件
创建了帖子
2016-08-31 03:26
社区公告
暂无公告