代码之家  ›  专栏  ›  技术社区  ›  MattSlay

TableAdapter是否只返回选定的列?(VS2008)

  •  1
  • MattSlay  · 技术社区  · 15 年前

    (VS2008)我试图在类型化数据集中配置TableAdapter,使其仅返回其所基于的表的主架构中的某个列子集,但它始终返回整个架构(所有列),其中我忽略的列中的值为空。

    tableADpater有来自向导的默认fill和getData()方法,其中包含表中的每一列,这很好。然后,我添加了一个名为getactivejobsbycustno(custno)的新参数化查询方法,并且我只在sql查询中包含了一些我实际希望在这个表视图中的列。

    但是,同样,它返回主表模式中的所有列,对于我省略的列,返回空值。

    我之所以想要这个,是因为我可以在ASP.NET中获得一些列,然后使用该表视图来使用。当它返回模式中的每一列时,我的演示GridView包含了我想向用户显示的更多列。而且,我想避免在gridview中声明列。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Dillie-O    15 年前

    当您向给定的tableadapter添加新查询时,它将假定它附加到的架构,这就是为什么您为不需要的列获取空值的原因。

    既然您提到已经创建了该过程,那么您需要做的是使用服务器资源管理器连接到数据库,然后简单地将该存储过程拖到xsd工作区中。这将创建一个单独的QueQueldAdvices,它将只具有您指定的列(仍然是强类型的),并且可以使用QueIdor来绑定/与GRIDVIEW交互。

        2
  •  1
  •   Justin Bannister    15 年前

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

    您可以使用强类型数据集创建一个dataview,并为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);
    
        3
  •  0
  •   Carter Medlin    14 年前

    在绑定到gridview之前,只需删除运行时不需要的列。底层类毕竟还是一个数据表。