如何在从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 { }
}

如何在从sql填充数据表时使用foreach循环编辑某些行

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"))

但我发现早期版本更清晰。