Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C WebApp中将数据从GridView获取到DataTable中_C#_Asp.net_Sql Server_Gridview_Datatable - Fatal编程技术网

C# 在C WebApp中将数据从GridView获取到DataTable中

C# 在C WebApp中将数据从GridView获取到DataTable中,c#,asp.net,sql-server,gridview,datatable,C#,Asp.net,Sql Server,Gridview,Datatable,我正在开发一个webapp,它目前有一个绑定到MSSQL的GridView。GridView正确地显示了数据库中的数据,我已经将其中一列显示在文本框中 我试图做的是,获取用户对GridView上的数据所做的更改,以便更新SQL数据库。我希望将新更改的数据从GridView中获取到一个DataTable中,以便将其与原始DataTable进行比较。然而,当我试图将GridView中的数据插入到新的DataTable中时,我总是在单元格中保留空格 这是我的密码: protected void

我正在开发一个webapp,它目前有一个绑定到MSSQL的GridView。GridView正确地显示了数据库中的数据,我已经将其中一列显示在文本框中

我试图做的是,获取用户对GridView上的数据所做的更改,以便更新SQL数据库。我希望将新更改的数据从GridView中获取到一个DataTable中,以便将其与原始DataTable进行比较。然而,当我试图将GridView中的数据插入到新的DataTable中时,我总是在单元格中保留空格

这是我的密码:

    protected void btnSave_Click(object sender, EventArgs e)
    {
        DataTable dtU = new DataTable();

        if (GridView.HeaderRow != null)
        {
            for (int i = 0; i < GridView.HeaderRow.Cells.Count; i++)
            {
                dtU.Columns.Add(GridView.HeaderRow.Cells[i].Text);
            }
        }

        foreach (GridViewRow row in GridView.Rows)
        {
            DataRow dr = dtU.NewRow();

            for (int i = 0; i < row.Cells.Count; i++)
            {
                dr[i] = row.Cells[i].Text;
            }
            dtU.Rows.Add(dr);
        }

        DataTable dtOrigData = GlobalVariables.dsOrigData.Tables[0];

        //Get changes
        var rowsTest = dtOrigData.AsEnumerable().Where(
            r => !dtU.AsEnumerable().Select(x => x["Name"]).ToList().Contains(r["Name"])).ToList();

    //do some code to update the SQL Database with the changes
    }

还有其他更简单的方法更新数据库吗?

您的GridView是DataGridView吗?为什么不直接将DataTable绑定到GridView.DataSource并使用SqlDataAdapter将更改写入服务器?因为当我将DataTable绑定到GridView.DataSource时,我会恢复原始数据,如果您为SqlDataAdapter创建了正确的UpdateCommand,则不应出现这种情况……我无法达到这一点,因为如果我将DataTable绑定到GridView.DataSource,我将获得与原始数据表完全相同的DataTable,没有任何更改。一旦我知道我的程序正在得到更改,那么我就可以使用UpdateCommand来更新数据库。另外,不,它不是DataGridView,因为它是一个WebApp。