2011-08-08 5 views
0

私はの3つのエンティティ(オーナー、マネージャー、テナント)で検索を実行するためにjQueryオートコンプリートコントロールを使用しています。すべてのエンティティはデータベース内の独自のテーブルに保存されます。要件は複雑ですか?どのようにこれらの問題を克服する?

オートコンプリートコントロールでは、グリッド(hidden div)が表示され、ユーザーの選択に基づいて設定されます。グリッドはテキストフィールドコントロールを使用するので、ユーザーは編集して再度保存することができます。サーバーに戻って提出する際 ユーザーが働いている実体を知る方法、

  1. は今、私はこれらの問題を抱えていますか?オーナー、マネージャーまたはテナントですか?私は これをデータベースのどこにデータを保存するかを知るために把握する必要があります。

  2. ご存じのとおり、サーバー側の検証は必須です。ユーザーが無効なデータを送信した場合の対処方法一般的なパターンは、エラーメッセージとともにページを再表示することです。
    私の場合、grid/divは独自のオートコンプリート検索に基づいて表示され、ページを表示するだけでdivを隠すことになります。

どんな方法でも簡単にアプローチできますか?

使用されるテクノロジは、jQueryとGrailsフレームワークです。

答えて

0

ここには多くのことがありますが、圧倒的なものではありません。ビットごとにそれに取り組む。

明らかに、最初のクエリでは、ジョインを使用して、指定されたクエリ値と一致する3つのテーブルからすべての結果を取得できます。しかし、私は、リレーショナルデータベースの基本的な考え方を破るように、3つの別々のデータベーステーブルの背後にあるあなたの理論的根拠に疑問を呈し始めます。しかし、の理論ではの可能性があります ")それぞれは人であり、それぞれが名字、姓、住所、都市などの同様のデータ要件を持つことになります。関係のために人によってidを定義する別のテーブルを持っているか、または代わりに "人"データベースにその役割を定義するフィールドを持っていますか?結局のところ、これが機能するためには、システムが人がどのような役割を担っているかを知るために何らかの共通の識別子を持たなければなりません。

もしあなたが既存の構造体にとどまっているのであれば、Owner_idのようなフィールド名として各テーブルのIDを別名にする複雑な結合をしなければならないと思います。彼らが属しているテーブル....効率的ではありません!

私は個人的にこの情報をjQuery Datatablesに問い合わせていますが、現時点で最も機能豊富なグリッドです。それはeditable regions availableとうまく動作しています。 UI側のこのトリックは、最初にajaxソースからの空の結果セットを使用してデータテーブルを初期化し、コマンドでそれを「リフレッシュ」することです。oTable.fnDraw(false);

最後に、保存するために、保存された値とjQuery Ajaxはそれをスクリプトに保存します。私はそのIDのDBを介してどのような関係があるかを調べることにしました。これは、より良い正規化によって、その値を取得するための関係ステータス(所有者、マネージャ、またはテナント)に基づいて簡単にクエリできるようになります。そこから、計算されたIDとタブ名に基づいてDB更新を実行し、成功を示して「メイン画面」に戻るようにビューを循環させます。

+0

さらに改行が必要です。また、カウベル。 – rockerest

+0

@rockerest、何と言う? – bpeterson76

+0

@ bpeterson76階層に1つのテーブルを使用し、ディスクリミネータカラムを使用するとどうなりますか? – Chiron

関連する問題