如何使用foreach循环编辑一些行,同时从sql填充数据表?

时间:2014-10-06 10:20:05

标签: c#

我正在尝试从数据库表中填充数据表。填充后我使用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 { }
        }

1 个答案:

答案 0 :(得分:2)

lineNumber检查可能需要进行int检查;请注意,目前它实际上正在进行object检查,它只支持引用相等 - 它永远不会匹配,即使值是string的{​​{1}},因为数据库中的值将成为与代码中的实习文字"1"不同的string实例。因此,第一次检查可能需要:

"1"

您在评论中询问如何使用字符串执行此操作;在这种情况下,非常相似:

if((int)row["lineNumber"] == 1)

这现在有效,因为if((string)row["BATCH_NO"] == "some value") 有一个重载的==运算符,它执行基于值的相等性测试,而不是基于参考的相等性测试。

注意:您可能会使用:

string==string

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