Silverlight DataGrid 实时计算
在中企业级的应用开发的过程中,我们经常有这种需求:程序能计算的表格数据,尽量让程序去做;这点本身不难,难的是如何尽量提高程序的人性化程度,需要自动计算,即所谓的所见即所得。
其实这个实现起来也比较简单啦,最主要的就是获取当前选中的行的数据咯。具体代码如下:
xaml部分:
<sdk:DataGridTemplateColumn Header="纳税收入"> <sdk:DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Margin="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="{Binding nssr}" Width="120" /> </DataTemplate> </sdk:DataGridTemplateColumn.CellTemplate> <sdk:DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <TextBox Height="25" Name="nssr" Text="{Binding Path=nssr, Mode=TwoWay}" Width="115" TextChanged="nssr_TextChanged" ></TextBox> </DataTemplate> </sdk:DataGridTemplateColumn.CellEditingTemplate> </sdk:DataGridTemplateColumn>
后台cs部分:
#region 纳税收入值改变 private void nssr_TextChanged(object sender, TextChangedEventArgs e) { jxs_gssr = this.dg_sourceGssrxx.SelectedItem as jxs_gssrxxInfo;//获取点击行的信息 TextBox aa = sender as TextBox; if(isNumber(aa.Text))//校验输入的是否是数字 { Decimal bb = (aa.Text == "" ? 0 : Convert.ToDecimal(aa.Text)); if (bb != 0) { Decimal temp = Convert.ToDecimal(jxs_gssr.bbsr - bb) / bb; jxs_gssr.bbccns = Math.Round(temp, 3);//效果呈现,具体计算在BLL层 } } } #endregion
相对比较简单啦,就一次简单的学习记录了。