Jos*_*nge 10 javascript c# sql datagrid store
我有多个网格显示基于给定过滤器的数据(在使用REST Api的Web应用程序中).显示的数据结构始终相同(以简化问题),但根据用户所在的屏幕,显示的结果不同.
此外,这是问题,必须禁用某些结果,以便用户无法选择它们.
示例:Foo有N条.如果我想向父亲(foo)添加一个新的子(bar),我会进入搜索屏幕,但我希望过滤后的网格显示为已经与父亲相关的残疾儿童.
目前我通过根据场景和"禁用"我不想要的结果执行特定连接来控制服务器上的此问题(数据库查询).但是这种方法导致我无法重用查询(由于特定的连接.也许我需要搜索Bars int order将它们与其他父亲Baz联系起来,我想要禁用已经与当前父亲相关的条...)
另一种方法可能如下:
在开始实施此解决方案之前,我想知道是否有更好的选择.我确信这是一个反复出现的问题,我不想重新发明轮子.
任何策略或建议?
编辑:显示示例:
假设这个模型:
Category N:M Item
SalesPromotion N:M Item
Run Code Online (Sandbox Code Playgroud)
我有两个不同的屏幕:一个显示项目属于一个类别,另一个显示项目属于一个促销.在每个屏幕中,我都可以搜索项目并将它们添加到Category或SalesPromotion中.但是当我在搜索项目时,我希望已经属于Category/SalesPromotion的项目显示为已禁用(或者为了简单起见未在此示例中显示).我可以在服务器中执行此操作,执行以下查询:
-- Query for search Items in Category screen
SELECT * FROM ITEMS i
LEFT JOIN ItemsCategories ic on ic.ItemId = i.ItemId
WHERE ic.CategoryId IS NULL OR ic.CategoryId <> @CurrentCategoryId
-- Query for search Items in SalesPromotion screen
SELECT * FROM ITEMS i
LEFT JOIN ItemsSalesPromotions isp on isp.ItemId= i.ItemId
WHERE isp.PromotionId IS NULL OR isp.PromotionId <> @CurrentPromotionId
Run Code Online (Sandbox Code Playgroud)
你可以想象如果我有越来越多这样的场景会发生什么(当然有更复杂的模型和查询).
一种替代方案可能是:
所以,我的问题是这种方法是一个很好的解决方案,还是有一个众所周知的解决方案(我想是这样).