【问题标题】:Are the requirements complicated? How to overcome these problems?要求复杂吗?如何克服这些问题?
【发布时间】:2011-08-08 16:39:08
【问题描述】:

我正在使用 jQuery 自动完成控件对 三个 实体执行搜索:所有者、经理和租户。每个实体都保存在数据库中自己的表中。

在自动完成控件下,将根据用户的选择显示并填充一个网格(隐藏的 div)。网格使用文本字段控件,因此用户可以再次编辑和保存。

现在,我遇到了这些问题:

  1. 提交回服务器时,如何知道是哪个实体 用户工作?它是所有者、经理还是租户?我需要弄清楚 这样做是为了知道将数据保存在数据库中的哪个位置。
  2. 如您所知,服务器端验证是必须的。如果用户提交了无效数据怎么办?常见的模式是重新显示带有错误消息的页面。
    但在我的情况下,grid/div 是基于自己的自动完成搜索显示的,再次显示页面只是为了隐藏 div。

我可以采用更简单的方法吗?

使用的技术是 jQuery 和 Grails 框架。

【问题讨论】:

    标签: jquery grails


    【解决方案1】:

    这里发生了很多事情,但并没有压倒一切。一点一点解决。

    显然,初始查询可以使用连接从三个表中获取与指定查询值匹配的所有结果。但是,我首先要质疑您在三个单独的数据库表背后的基本原理,因为它打破了关系数据库的基本原则——如果一个人担任两个不同的角色,则重复字段并可能重复数据(经典:“不太可能,但是理论上可能的情况”)每个人都是一个人,并且每个人都会有相似的数据要求,例如名字,姓氏,地址,城市等。那么,为什么不将“人”信息存储在一个表,然后要么有一个单独的表,通过 id 为关系定义一个人,要么在“人”数据库​​中定义一个字段来定义他们的角色?最终,要使此功能起作用,您必须拥有某种通用标识符,系统可以查看该标识符以告诉它该人担任什么角色。

    如果您要保留现有结构,我想您必须进行复杂的联接,将每个表中的 ID 别名为像 Owner_id 这样的字段名,然后您可以使用它来根据哪个表做出决定他们属于....效率不高!

    我会亲自将信息查询到jQuery Datatables,这是目前功能最丰富的网格。它确实有editable regions available 并且运行良好。在 UI 方面的技巧是使用来自 ajax 源的空结果集初始化数据表,然后使用命令 oTable.fnDraw(false);

    “刷新”它

    最后,为了保存,我将使用保存值的​​ ID,然后 jQuery Ajax 将其保存到脚本中。我将通过该 ID 上的数据库运行查找以查看它具有什么关系,这是更好的规范化允许您简单地根据他们的关系状态(所有者、经理或租户)查询以获得该值的地方。从那里,根据计算的 ID 和表名运行数据库更新并循环查看以指示成功并返回“主屏幕”

    【讨论】:

    • 需要更多换行符。还有,牛铃。
    • @bpeterson76 使用一个表作为层次结构并使用鉴别器列怎么样?
    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    • 2011-09-11
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 2021-05-08
    • 1970-01-01
    相关资源
    最近更新 更多