我有一个DataGrid
我已经绑定到一个SqlDataApter
。DataTextColumn
如果我使用如下代码所示为网格设置 XAML,它可以完美运行
<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="27,42,0,0"
Name="dataGrid1" VerticalAlignment="Top" AreRowDetailsFrozen="True">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding KEY}" Visibility="Hidden"
IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding CHARACTERISTIC_CODE}"
Header="Unit" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding UNIT_CHAR}"
Header="Unit" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding IC_DEF_CHAR_NUMERIC}"
Header="Number" IsReadOnly="False"/>
<DataGridTextColumn Binding="{Binding IC_DEF_CHAR_TEXT}"
Header="Text" IsReadOnly="False" />
<DataGridTextColumn Binding="{Binding IsNumeric}"
Header="Status" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding IsText}"
Header="Status" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
我使用以下方法将其绑定到DataTable
代码中:
dataGrid1.ItemsSource = dTable.DefaultView
我有一个使用 ذSqlDataAdapterذ 更新方法保存更改的按钮:
dAdapter.Update(dTable)
问题是我想在记录c 和记录IC_DEF_CHAR_TEXT
时禁用编辑字段。我尝试绑定到该属性,但发现它不可绑定,因此我为这两个字段创建了模板并将该属性绑定到and字段。isNumeri
IC_DEF_CHAR_TEXT
IsText
IsReadOnly
IsEnabled
IsText
IsNumeric
<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Left"
Margin="27,42,0,0" Name="dataGrid1" VerticalAlignment="Top"
AreRowDetailsFrozen="True">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding KEY}" Visibility="Hidden"
IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding CHARACTERISTIC_CODE}"
Header="Unit" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding UNIT_CHAR}"
Header="Unit" IsReadOnly="True"/>
<DataGridTemplateColumn Header="Numeric">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=IC_DEF_CHAR_NUMERIC,
Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox IsReadOnly="False"
Text="{Binding Path=IC_DEF_CHAR_NUMERIC,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Text" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=IC_DEF_CHAR_TEXT,
Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=IC_DEF_CHAR_TEXT,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
这完全符合我的要求,必要时启用了文本框。但是,TextBoxes
在更新期间所做的更改不再保存到数据库中。有人可以向我解释为什么不再更新数据库吗?