(VS2008)我正在尝试在Typed DataSet中配置TableAdapter,以便仅从它所基于的表的主模式中返回某个列的某个子集,但它总是返回整个模式(所有列)在我省略的列中有空白值。
TableAdpater具有来自向导的默认Fill和GetData()方法,这些方法包含表中的每一列,这很好。然后我添加了一个名为GetActiveJobsByCustNo(CustNo)的新参数化查询方法,我只在SQL查询中包含了几个我真正想要在这个表视图中的列。
但是,它再次返回主表模式中的所有列,省略了我省略的列。
我想要这个的原因是,我可以回到几列,在ASP.NET GridView中使用AutoGenerateColumns的表视图。随着它给我回到模式的每一列,我的演示文稿GridView包含更多我希望向用户显示的列。而且,我想避免在GridView中声明列。
答案 0 :(得分: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);
答案 1 :(得分:1)
当您向给定的TableAdapter添加新查询时,它将假定它所附加到的模式,这就是为什么您为不需要的列获取空白值的原因。
由于您提到已经创建了该过程,因此您需要使用Server Explorer连接到数据库,只需将该存储过程拖到XSD工作区中即可。这将是创建一个单独的QueryAdapter,它只包含您指定的列(仍然是强类型),您可以使用该QueryAdapter绑定/与您的GridView交互。
答案 2 :(得分:0)
在绑定到Gridview之前,只需在运行时删除不需要的列。毕竟,基础类仍然只是一个DataTable。