• WPF中修改DataGrid单元格值并保存


    编辑DataGrid中的单元格的内容然后保存是非常常用的功能。主要涉及到的方法就是DataGrid的CellEditEnding  和BeginningEdit 。其中BeginningEdit 是当单元格选中后,状态为可编辑状态时触发。CellEditEnding 是在单元格失去焦点后触发的事件。    对于编辑DataGrid中单元格内容的实现逻辑比较简单:

    1.保存旧的单元格内容。
    2.判断修改后的内容是否符合规范。
    3.保存到数据库。
    以下就是简单的实现逻辑,仅供参考:
    前台代码:


    <DataGrid Grid.Row="1" x:Name="dgData"
    CellEditEnding="CellEditEnding"
    BeginningEdit="BeginningEdit">
    <!--需要完善,除了序号,基本完善-->
    <DataGrid.Columns>

    <DataGridTemplateColumn Header=" 序号" Width="50" MinWidth="10" IsReadOnly="True">
    <DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
    <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow}}, Path=Header}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,0,0,0"></TextBlock>

    </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>

    <DataGridTextColumn Binding="{Binding Name}" Width="*" Header="账套名称" IsReadOnly="False"/>

    </DataGrid.Columns>
    </DataGrid>

    后台代码:

    private void CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {


    string newValue = (e.EditingElement as TextBox).Text;

    //判断新名称和就名称是否一样
    if (ZTName!=newValue)
    {


    DataAccess.IAccountDAL iaccount = DALResolver.Instance.Resolve<IAccountDAL>();

    int count = iaccount.Count(newValue);

    if (count>0)
    {
    MessageBox.Show("账套名称重复,请重新命名!", "警告", MessageBoxButton.OK);
    (e.EditingElement as TextBox).Text = ZTName;
    return;
    }
    else
    {
    int id = (this.dgData.SelectedItem as Founder.Model.Account.ModelAccountInfo).AccountID;
    if (!iaccount.UpdateZTName(newValue,id))
    {
    MessageBox.Show("更新账套名称失败,请重试!","提示",MessageBoxButton.OK);
    }
    }
    //判断是否重复

    }

    }

    private string ZTName = string.Empty;
    private void BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
    {
    ZTName = (this.dgData.SelectedItem as Founder.Model.Account.ModelAccountInfo).Name;
    //MessageBox.Show(ZTName);
    }

    总结:该功能比较简单,主要就是熟悉DataGrid的熟悉和方法。在此,仅作记录。

  • 相关阅读:
    架设WCF项目出现的问题
    百思不得其解的"Failed to allocate a managed memory buffer of 268435456 bytes."错误解决
    Ajax 分页
    关于Asp.net调用外部程序的拒绝访问错误
    转贴:[翻译]Visual Studio 2008 Code Metrics
    荀子,劝学篇(部分)
    .net设计模式(转载)
    人月神话读书笔记
    Memory food
    2010年4月12日,今天做计划
  • 原文地址:https://www.cnblogs.com/yelanggu/p/10444632.html
Copyright © 2020-2023  润新知