在下图中,数据源中显示了 View 。
在下图中,数据集设计 View 中显示了相同的数据源
将相同的 DataSource 拖放到表单上作为网格后,同一网格的 DataMember 属性不会在其列表中显示名称。
网格的属性
绑定(bind)源的属性
View 的脚本是
ALTER View [dbo].[V_CustomerBalance] as
SELECT M.Sales_id,
M.Sales_date,
M.Customer_id,
M.Total_Weight,
M.Total_Amount,
M.Is_fully_paid,
SP.New_SrNo,
SP.Total_Amount_Paid,
(M.Total_Amount - SP.Total_Amount_Paid) AS Due_Amount
FROM SalesMasterTable AS M ,
(SELECT P.Sales_id,
MAX(P.Sr_no) + 1 AS New_SrNo,
SUM(P.Amount_paid) AS Total_Amount_Paid
FROM SalesPaymentTable AS P
GROUP BY P.Sales_id
HAVING MIN(P.Amount_due) > 0) AS SP
WHERE M.Sales_id = SP.Sales_id
GO
我的问题是,数据源中存在的 View 是否也应该存在于数据成员中。
我认为是的。 如果不是那为什么?
最佳答案
有时回到基础更简单。
首先,您的数据 GridView 应该使用绑定(bind)源组件作为其数据源。
GridView 的数据成员应该为空,仅选择数据源(到绑定(bind)源)。
如果您按照以下步骤操作,您将获得使用 SQL View 的 GridView 的工作副本。
- 在解决方案中创建一个新的数据集并向其中添加您的 View 。
- 打开网格所在的表单。
- 在数据集的上下文菜单中,将数据源设置为解决方案中键入的数据集。
这应该在您的表单上创建三个组件。
- 数据集组件。
- 附加到您的数据集组件的 BindingSource。
- 来自您的解决方案数据集的自定义表适配器。
您的 GridView 将其数据源附加到绑定(bind)源。绑定(bind)源数据源将设置为表单中的数据集组件,其数据成员将显示 View 名称。 Gridview 不应在 DataMember 属性上显示任何内容,因为它将从绑定(bind)源获取所有数据和信息。
在您的代码中,您的 binging 源数据成员属性应设置为 View 名称。
我希望这会有所帮助。
关于c# - 包含子查询的 View 未显示在 DataMember 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23140655/