在c#中更新Gridview到现有的sql表
本文关键字:sql 更新 Gridview | 更新日期: 2023-09-27 18:16:50
我从excel导出数据并在gridview中显示它,当我点击提交时,它需要在现有表中更新。
下面是我的excel数据S.No。RequestID Subdivision No Parcel No CUID Status备注1 5 42 55 55 Open Pending
我已经成功导出并显示在Gridview中。现在我想在现有表(Tablename:ParcelInf)中更新相同的内容。
下面是我的表格细节
Table ParcelInf(
[RequestID] [int] IDENTITY(1,1) NOT NULL,
FormattedRequestID AS ('CUID' + RIGHT('00' + CAST(RequestID AS VARCHAR(10)),10)),
[SubdivisionNo] [nvarchar](20) NOT NULL,
[ParcelNo] [nvarchar](20) NOT NULL,
[Region] [nvarchar](20) NULL,
[City] [nvarchar](20) NULL,
[Zone] [nvarchar](20) NOT NULL,
[CoordinateSystem] [nvarchar](20) NOT NULL,
[CUID] [nvarchar](20) NULL,
[Status] [nvarchar](20) NULL,
[Remarks] [nvarchar](20) NULL,
[UpdateDate] [date] NULL,
[RequestedBy] [nvarchar] (20) NULL,
FOREIGN KEY (RequestID) REFERENCES RequestInf (RequestID)
下面是我的代码
private void BindGrid()
{
string Constr = null;
SqlConnection con;
SqlCommand cmd;
string UpdateQuery = null;
Constr = "Data Source=WIN-A876U316VGA;integrated security=true;Initial Catalog=CUIDinfo";
con = new SqlConnection(Constr);
DataTable dtProducts = new DataTable("ParcelInf");
dtProducts.Columns.Add("Status");
dtProducts.Columns.Add("Remarks");
foreach (DataRow DR in dtProducts.Rows)
{
con.Open();
UpdateQuery = "Update ParcelInf Set Status='" + DR["Status"] + "',Remarks='" + DR["Remarks"] + "' where RequestID=" + DR["RequestID"] ;
cmd = new SqlCommand(UpdateQuery, con);
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
}
}
}
它没有抛出任何错误,但它没有将数据更新到SQL
检查页面生命周期,我猜你没有在page_load上调用BindGrid(),即使在PostBack上,所以肯定dtProducts.Rows.Count将为零。
添加以下代码到Page_Load事件:
if (!IsPostBack) BindGrid();
- 每次创建新对象时,数据表'dtProducts'为空。
-
See you code
DataTable dtProducts = new DataTable("ParcelInf"); dtProducts.Columns.Add("Status"); dtProducts.Columns.Add("Remarks"); foreach (DataRow DR in dtProducts.Rows) { con.Open(); UpdateQuery = "Update ParcelInf Set Status='" + DR["Status"] + "',Remarks='" + DR["Remarks"] + "' where RequestID=" + DR["RequestID"] ; cmd = new SqlCommand(UpdateQuery, con); cmd.ExecuteNonQuery(); cmd.Dispose(); con.Close(); }
您没有从表对象中的网格中获取任何值。所以循环计数总是0。
- 调试一次代码,检查行数
- 重试填充值,它会工作。