1

我有DataGridView一个绑定到它的,从带有.NET 数据提供程序库DataTable的数据库中填充。PostgreSQLNpgsql

填充记录有效,但是当我只想将单个记录附加到已经存在DataTable时,以前的记录就会消失:

NpgsqlDataAdapter npDataAdapterSingle = new NpgsqlDataAdapter("SELECT * from \"Weight\" ORDER BY id DESC LIMIT 1", this.npConnection);
DataTable tmpTable = new DataTable("tmpTable");
npDataAdapterSingle.Fill(tmpTable);

DSWeight.WeightRow row = this.dSWeight.Weight.NewWeightRow();
row.ItemArray = tmpTable.Rows[0].ItemArray;
this.dSWeight.Weight.Rows.InsertAt(row, 0); //Prepend, but i also tried this.dsWeight.Weight.Rows.Add(row);

如果我选择所有记录,没有LIMIT'ing,那么它会按预期工作。但我想——如果我已经有了这些记录,为什么还要重新查询数据库?这就是我想要的原因LIMIT

也许还有另一种解决方案,因为我手动将新记录添加到数据库并查询它们以将它们添加到数据表,而不是它应该的方式:将新记录添加到数据表并将它们添加到数据库。我这样做是因为我希望数据库管理 id 和时间戳字段并让 datagridview 填充这些字段。

我错过了什么?

4

1 回答 1

0

我不确定 DSWeight.WeightRow 的数据类型和“this”对象的范围,因为我只能看到部分代码而不是完整的方法。这可能对你有用。请试一试。

NpgsqlDataAdapter npDataAdapterSingle = new NpgsqlDataAdapter("SELECT * from \"Weight\" ORDER BY id DESC LIMIT 1", this.npConnection);
DataTable tmpTable = new DataTable("tmpTable");
npDataAdapterSingle.Fill(tmpTable);

row =  tmpTable.NewRow();

foreach (DataColumn col in tmpTable.Columns)
   row[col.ColumnName] = tmpTable.Rows[0][col.ColumnName];

tmpTable.Rows.Add(row, 0);
于 2012-09-03T07:42:02.870 回答