首页 新闻 搜索 专区 学院

wpf datagrid与datatable 绑定

0
悬赏园豆:15 [已解决问题] 解决于 2012-01-17 09:52

创建datatable的一个实例dt,表中有一列是bool类型,绑定为DataGridBoolColumn。
希望在DataGrid中点击DataGridBoolColumn中的CheckBox直接修改DataTable中对应的值。

xaml:

 1  <DataGrid Name="list" Margin="268,0,0,12" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="Black"  FontSize="10.667"
2 Height="125.923" VerticalAlignment="Bottom"
3 FontFamily="Microsoft YaHei" CanUserAddRows="True" CanUserDeleteRows="False" IsReadOnly="True"
4 CanUserReorderColumns="True" CanUserResizeColumns="True" AutoGenerateColumns="True" HorizontalAlignment="Left" Width="64">
5 <DataGrid.Columns>
6 <DataGridTemplateColumn Header="是否继续">
7 <DataGridTemplateColumn.CellTemplate>
8 <DataTemplate>
9 <CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding Path=Temporary,Mode=TwoWay}"></CheckBox>
10 </DataTemplate>
11 </DataGridTemplateColumn.CellTemplate>
12 </DataGridTemplateColumn>
13 </DataGrid.Columns>
14 </DataGrid>


后台:

 DataTable dt;
public MainWindow()
{
InitializeComponent();
dt = new DataTable();
DataColumn d1 = new DataColumn("Temporary", typeof(bool));
dt.Columns.Add(d1);
list.ItemsSource = dt.DefaultView;
}

有一个按钮实现动态添加数据:

 private void button3_Click(object sender, RoutedEventArgs e)
{
DataRow dr = dt.NewRow();
bool b=false;
dr["Temporary"] = b;
dt.Rows.Add(dr);
}

运行后在界面上修改checkbox的值,再利用代码将dt中的数据显示出来查看值是否改变。结果值为其加入dt时的值,并没有改正。请问各位高手问题出在哪里呢?谢谢!


答应不爱你的主页 答应不爱你 | 初学一级 | 园豆:3
提问于:2012-01-16 17:07
< >
分享
最佳答案
0

你的这个 <CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding Path=Temporary,Mode=TwoWay}"></CheckBox>应该有一个点击的事件啊。

收获园豆:15
悟行 | 专家六级 |园豆:12429 | 2012-01-16 17:18

可以有啊。但是我觉得和这个事件没有关系。是datagrid和datatable之间绑定的问题。我的理解对吗?

答应不爱你 | 园豆:3 (初学一级) | 2012-01-16 17:26

@答应不爱你: 你先要找到你要修改的那一行的row的值,再找到点击对应CheckBox这一列的值。把你要修改的值赋给它就是的了。

悟行 | 园豆:12429 (专家六级) | 2012-01-16 17:48

@Wellbeing: 谢谢你,问题解决了!

答应不爱你 | 园豆:3 (初学一级) | 2012-01-17 09:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册