2011-08-08 27 views
0

我正在使用jQuery自动完成控件执行搜索三个实体:所有者,经理和租户。每个实体都保存在数据库中的自己的表中。需求是否复杂?如何克服这些问题?

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

,我有这些问题:

  1. 当提交到服务器,怎么知道 用户曾在哪个实体?是业主,经理还是租户?我需要将 弄清楚,以便知道数据库中数据的保存位置。
  2. 正如你所知,服务器端验证是必须的。如果用户提交了无效数据,该怎么办?常见模式是用错误消息重新显示页面。
    但在我的情况下,网格/ div显示基于自己的自动完成搜索,再次显示页面只是要隐藏div。

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

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

回答

0

这里有很多事情要做,但它并不是非常重要。一点一点地解决它。

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

如果你想保留现有的结构,我想你必须做一个复杂的连接,将每个表的ID作为Owner_id这样的字段名进行别名,然后你可以使用它来根据你的决定他们属于...表没有效率!

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

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

+0

需要更多换行符。另外,牛铃。 – rockerest

+0

@rockerest,说什么? – bpeterson76

+0

@ bpeterson76如何使用一个表作为层次结构并使用鉴别器列? – Chiron