为啥 SqlDataAdapter 的填充不允许我添加与外观具有相同行值的行?

Posted

技术标签:

【中文标题】为啥 SqlDataAdapter 的填充不允许我添加与外观具有相同行值的行?【英文标题】:Why does SqlDataAdapter's fill not allow me to add a row with the same its own rows' value as appearance?为什么 SqlDataAdapter 的填充不允许我添加与外观具有相同行值的行? 【发布时间】:2015-03-20 08:32:46 【问题描述】:

为什么 SqlDataAdapter 的 Fill 方法不允许我添加与外观具有相同行值的行?我无法成功地提供出现在同一行的行的值,并在 DataTable 中填充了一个。 Check this out:

using (SqlDataAdapter a = new SqlDataAdapter("SELECT SIPNO, SERINO, TARIH FROM SNOHAREKETLER WHERE Cast(TARIH as DATE) BETWEEN '2015/03/19' AND '2015/03/20' AND (TEZNO = 'T23' OR TEZNO = 'T31') AND CIKTI is null", c))
            
                // 3
                // Use DataAdapter to fill DataTable
                DataTable t = new DataTable();
                a.Fill(t);

                t.Columns.Add("MyColumn", typeof(string));

                DataRow workRow;

                int iGetCount = t.Rows.Count;

                for (int i = 0; i <= iGetCount - 1; i++)
                
                    workRow = t.NewRow();
                    workRow["MyColumn"] = i;
                    t.Rows.Add(workRow);
                

                // 4
                // Render data onto the screen
                dataGridView1.DataSource = t;
            

【问题讨论】:

您的代码中有任何异常或错误消息吗? 您正在向现有行集合添加行。是否要更新现有行并将每个 EXISTING 行的新列设置为该行的索引?可能您的代码会失败,因为在添加行时,您需要为每一列提供不能保留为 NULL 值的值 Soner,什么都没有扔掉。 史蒂夫,没有任何失败。代码工作正常。请检查屏幕,它可以提供我在帖子中添加的想法。 DataGridView 不在允许用户做某事的模式下。 【参考方案1】:

这是我的问题的解决方案。我搜索并咨询了某人。我的问题是尝试添加 NewRow,这导致了问题。

DataTable t = new DataTable();
a.Fill(t);

DataColumn newCol = new DataColumn("NewColumn", typeof(string));
newCol.AllowDBNull = true;
t.Columns.Add(newCol);
foreach (DataRow row in t.Rows)

     row["NewColumn"] = "With String";

dataGridView1.DataSource = t;

【讨论】:

以上是关于为啥 SqlDataAdapter 的填充不允许我添加与外观具有相同行值的行?的主要内容,如果未能解决你的问题,请参考以下文章

使用 SqlDataAdapter 用新名称填充数据集中的表,代码不完全运行且没有错误

使用 SqlDataAdapter 填充 DataTable 时,CommandTimeout 不起作用

SqlDataAdapter 未填充 DataTable

检测 SqlDataAdapter 填充方法何时完成

SQLDataAdapter 用主键填充数据表会产生错误并退出子

如何在 where 子句上基于 SqlCommand 或 SqlDataAdapter 填充 datagridview? SqlDataAdapter 不适用于哪里?