2

(VS2008)我正在尝试在 Typed DataSet 中配置 TableAdapter 以仅从它所基于的表的主架构返回列的某个子集,但它始终返回具有空白值的整个架构(所有列)在我省略的列中。

TableAdpater 具有来自向导的默认 Fill 和 GetData() 方法,它们包含表中的每一列,这很好。然后,我添加了一个名为 GetActiveJobsByCustNo(CustNo) 的新参数化查询方法,并且我只在 SQL 查询中包含了我真正希望在此表视图中出现的几列。

但是,它再次返回主表模式中的所有列,而我省略的列的值为空。

我想要这个的原因是,我可以只取回几列,以便在 ASP.NET GridView 中使用带有 AutoGenerateColumns 的表视图。它给了我架构中的每一列,我的演示文稿 GridView 包含更多我想向用户展示的列。而且,我想避免必须在 GridView 中声明列。

4

3 回答 3

2

当您将新查询添加到给定的 TableAdapter 时,它将假定它所附加到的架构,这就是您获得不需要的列的空白值的原因。

由于您提到已经创建了该过程,您需要做的是使用服务器资源管理器连接到数据库,然后简单地将存储过程拖到您的 XSD 工作区中。这将创建一个单独的 QueryAdapter,它只包含您指定的列(仍然是强类型),您可以使用该 QueryAdapter 与您的 GridView 绑定/交互。

于 2009-03-30T16:45:47.967 回答
1

是否在返回表中所有行的另一个查询中使用了强类型数据集?

您可以做的是使用强类型数据集创建一个数据视图,并为您的 DataGridView 公开一个数据表。

我不确定你的要求是什么,但这个例子应该可以帮助你:

DataView dv = new DataView(ds.<Your_Table>);

// This will create a new data table with the same name,
// But with only two columns from the original table.
// This could then be bound to your data grid. 
DataTable dt = dv.ToTable(false,
                          ds.<Your_Table>.<Your_Column1Column>.ColumnName,
                          ds.<Your_Table>.<Your_Column1Column>.ColumnName);
于 2009-03-30T16:40:48.867 回答
0

在绑定到 Gridview 之前,只需在运行时删除不需要的列。毕竟底层类仍然只是一个 DataTable。

于 2010-05-15T02:57:52.660 回答