wpf datagrid的数据更新难题,请高手指点!!!

在开发一个桌面应用,从数据导出到一个datagrid,然后在datagrid编辑,编辑后更新数据到数据库,发现以下的问题

编辑方式有两种:

1、 双击单元格,手工输入数据,这种情况可以更新到数据库,但只能一个个单元格编写数据

2、把数据从excel复制后,粘贴到datagrid,这种情况无法更新到数据库。

初步查找:采用1方法双击编辑datagrid单元格,数据已经在datagrid.itemssource的表格更新

                  采用2方法,数据只是显示在datagrid界面,datagrid.itemssource没有更新

更新的代码如下:

  private void savetemp_Click(object sender, RoutedEventArgs e)//更新结果到数据库
        {
            try
            {
                open(con);
                string sql1 = "select * from 测试记录表 ";
                SqlDataAdapter sqlda = new SqlDataAdapter();//
                sqlda.SelectCommand = new SqlCommand(sql1, connect);
                SqlCommandBuilder cb = new SqlCommandBuilder(sqlda);
                System.Data.DataTable dt = new System.Data.DataTable();
                dt = ((DataView)inputrecord.ItemsSource).Table;
                sqlda.Update(dt);
                MessageBox.Show("OK");
                close(con);
            }
            catch (Exception)
            {

 

                MessageBox.Show("FAIL"); ;
            }

 


           

        }

软件的界面截图:双击编辑输入的数据,可以成功更新到数据库

wpf datagrid的数据更新难题,请高手指点!!!_第1张图片

粘贴过来的:如果双击该单元格,变空白,该数据只在前端,求把数据更新到后台的方法

wpf datagrid的数据更新难题,请高手指点!!!_第2张图片wpf datagrid的数据更新难题,请高手指点!!!_第3张图片

 

补充粘贴的代码,红色是关键

 public void paste(DataGrid dataGrid, int cIndex, int rIndex)//粘贴到datagrid
        {
            // 获取剪切板的内容,并按行分割    
            string pasteText = Clipboard.GetText();
            if (string.IsNullOrEmpty(pasteText))
                return;

 

            if (dataGrid.SelectedCells.Count > 0)
            {
                cIndex = dataGrid.CurrentColumn.DisplayIndex;

 

            }
            string[] Rinfo = pasteText.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            if (cIndex > -1 && rIndex > -1)
            {
                int rSum = Math.Min(Rinfo.Length, dataGrid.Items.Count - rIndex);
                for (int i = 0; i < rSum; i++)
                {
                    string[] Cinfo = Rinfo[i].Split(new string[] { "\t" }, StringSplitOptions.RemoveEmptyEntries);
                    int cSum = Math.Min(Cinfo.Length, dataGrid.Columns.Count - cIndex);
                    for (int j = 0; j < cSum; j++)
                    {

 

                        DataGridColumn dgcC = dataGrid.Columns[cIndex + j];

 

                        try
                        {
                            (dataGrid.Columns[cIndex + j].GetCellContent(dataGrid.Items[rIndex + i]) as TextBlock).Text = Cinfo[j];
                           
                        }
                        catch
                        {
                            MessageBox.Show("粘贴失败!");
                        }
                    }
                }

            }
        }

你可能感兴趣的:(wpf datagrid的数据更新难题,请高手指点!!!)