0

这就是我想要实现的目标:

我在数据库中有一个表,其中有一个名为“item_code”的列。

我需要查询这张表,一次返回一行。现在,我需要将“item_code”列的值用于已返回的一行,以查询另一个表,我将使用它来获取一堆行。我该怎么做呢?

我尝试在 while 循环中使用 datareader 对象,一次获取一行,然后查询此循环内的另一个表以获取所需的行,但我不知道如何将这些数据放入 gridview(使用数据表?如果是,如何?)以这样一种方式,即在每次迭代 while 循环后,gridview 中的前几行不会被删除。

我知道将数据放入网格视图的唯一方法是使用 .Fill() 但显然,在这种情况下,Fill 方法不会这样做,因为它会清除网格视图中的先前条目。

请帮忙。

4

3 回答 3

2

我需要查询这张表,一次返回一行。现在,我需要将“item_code”列的值用于已返回的一行,以查询另一个表,我将使用它来获取一堆行。我该怎么做呢?

您可以使用单个 SQL 查询来连接“item_code”上的两个表并从第二个表中检索结果。

于 2012-09-08T11:35:57.113 回答
2

您的解决方案将起作用,但您是正确的,Fill() 将删除表格的内容。相反,使用 Merge()

var myMainTable = new DataTable();

foreach(var itemId in itemIds)
{
  var currentTable = new DataTable();
  // submit new query
  myAdapter.Fill(currentTable)
  myMainTable.Merge(currentTable);
}
于 2012-09-08T11:36:26.530 回答
2

您可以一步完成 SQL 级别,如下所示:

SELECT Table2.* 
FROM Table2
INNER JOIN Table1 ON Table1.item_code = Table2.item_code
ORDER BY Table2.item_code

当然,如果您需要制作一个较小的列表,您也可以编写WHERE

于 2012-09-08T11:39:02.317 回答