要求是否复杂?如何克服这些问题?

时间:2011-08-08 16:39:09

标签: jquery grails

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

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

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

  1. 提交回服务器时,如何知道哪个实体 用户工作?是业主,经理还是租客?我需要想一想 这是为了知道在数据库中保存数据的位置。
  2. 如您所知,必须进行服务器端验证。如果用户提交了无效数据该怎么办?常见的模式是再次使用错误消息重新显示页面 但在我的情况下,grid / div显示基于自己的自动完成搜索,再次显示页面只是隐藏div。
  3. 我可以采用更简单的方法吗?

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

1 个答案:

答案 0 :(得分:0)

这里有很多事情发生,但并非压倒性的。一点一点地解决它。

显然,初始查询可以使用连接来获取与指定查询值匹配的三个表的所有结果。但是,我首先会质疑三个独立数据库表背后的基本原理,因为它打破了关系数据库的基本原则 - 重复字段,如果一个人填充两个不同的角色,可能会重复数据(经典:“不太可能,但在理论上可能的情况“)每个人都是一个人,每个人都有类似的数据要求,如名字,姓氏,地址,城市等。所以,为什么不存储”人“信息一个表,然后要么有一个单独的表,通过id为关系定义一个人,或者在“人”数据库​​中有一个定义其角色的字段?最终,要实现这一目标,您必须拥有某种通用标识符,系统可以查看该标识符以告知该人员所持有的角色。

如果你要继续使用现有的结构,我想你必须做一个复杂的连接,将每个表中的ID别名为像Owner_id这样的字段名,然后你可以根据什么表来决定他们属于....效率不高!

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

“刷新”它。

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