javascript – 如何禁用网格中的元素

前端之家收集整理的这篇文章主要介绍了javascript – 如何禁用网格中的元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@
我有多个网格显示基于给定过滤器的数据(在使用REST Api的Web应用程序中).显示的数据结构始终相同(为了简化问题),但是根据用户所在的屏幕,显示的结果不同.

另外,这是一个问题,一些结果必须被禁用,以便用户无法选择它们.

示例:A Foo有N个条.如果我想给父亲(foo)添加一个新的孩子(吧),我去搜索屏幕,但是我想要筛选的网格显示为与父亲相关的残疾儿童.

目前,我正在服务器(数据库查询)控制这个问题,通过根据场景进行具体的连接和“禁用”我不想要的结果.但是这种方法导致我无法重复使用查询(由于具体连接),也许我需要搜索Bars int命令将其与其他父亲Baz相关联,并且我想要禁用与当前父亲相关的Bars …)

另一种方法可能如下:

>将与父亲相关的孩子(只有ids)保存在内存中的数组(javascript)
>在“prerender”网格事件(或类似的)中,检查每个元素是否包含在前一个数组中(按id搜索).如果是这样,将其标记为禁用(例如).
这是客户端的一个可重用的解决方案,我可以随时在服务器端重用相同的查询.

在开始实施这个解决方案之前,我想知道是否有更好的选择.
我相信这是一个反复出现的问题,我不想重塑轮子.

任何策略或建议?

编辑:显示示例:

假设这个模型:

Category N:M Item
SalesPromotion N:M Item

我有两个不同的屏幕:一个显示项目属于一个类别,另一个显示项目属于一个促销.在每个屏幕中,我可以搜索项目并将其添加到类别或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

你可以想象如果我有越来越多的这样的场景(当然更复杂的模型和查询)会发生什么.

一个选择可能是:

>存储内存中已经属于当前类别/ SalesPromotion的项目(javascript,客户端).
>在客户端的网格预渲染事件(或等效)中,确定必须禁用哪些项目(通过搜索存储项目中的每一行).

所以,我的问题是这个方法是一个很好的解决方案,或者是有一个众所周知的解决这个问题的解决方案(我想是这样).

解决方法

我根据op的评论改变了我的答案

所以你基本上有两个选择.

>在查询数据库删除Ids服务器端. (影响响应性能,但更安全).>在客户端使用js并将其从网格中删除.

原文链接:https://www.f2er.com/js/153150.html

猜你在找的JavaScript相关文章