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>
View Code

后台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
View Code

相对比较简单啦,就一次简单的学习记录了。

posted @ 2015-07-19 18:18  Prolovecui  阅读(201)  评论(0编辑  收藏  举报