如何在从sql填充数据表时使用foreach循环编辑某些行
本文关键字:循环 foreach 编辑 sql 数据表 填充 | 更新日期: 2023-09-27 18:25:43
我正试图从数据库表中填充数据表。填充后,我使用asp:GridView来显示数据。
问题是,我试图在从数据库填充一些行之后,但在绑定数据之前编辑这些行。
我对c#很陌生,所以我不能让它工作。我的代码不会更新任何内容。
private void BindGridviewFileData()
{
string ConnectionStringName = WebConfigurationManager.ConnectionStrings["LocalConnection"].ConnectionString;
try
{
using (SqlConnection sqlConn = new SqlConnection(ConnectionStringName))
{
using (SqlCommand sqlCmd = new SqlCommand())
{
sqlCmd.CommandText = "SELECT * FROM VISUALISATION";
sqlCmd.Connection = sqlConn;
sqlConn.Open();
SqlDataReader objDataReader = sqlCmd.ExecuteReader();
DataTable objDataTable = new DataTable();
objDataTable.Load(objDataReader);
foreach (DataRow row in objDataTable.Rows)
if (row["lineNumber"] == "1")
row["BATCH_NO"] = "new Value";
gvSubjectDetails.DataSource = objDataTable;
gvSubjectDetails.DataBind();
sqlConn.Close();
}
}
}
catch { }
}
lineNumber
检查可能需要是int
检查;请注意,目前它实际上正在进行object
检查,它只支持引用相等-即使值是"1"
的string
,它也永远不会匹配,因为数据库中的值将成为与代码中的中间文字"1"
不同的string
实例。因此,第一次检查可能需要:
if((int)row["lineNumber"] == 1)
您在评论中询问如何使用字符串来完成此操作;在这种情况下,非常相似:
if((string)row["BATCH_NO"] == "some value")
这现在起作用,因为string==string
有一个重载的==
运算符,它执行基于值的相等测试,而不是基于引用的相等测试。
注意:您也可以可能使用:
if(Equals(row["BATCH_NO"], "some value"))
但我发现早期版本更清晰。