1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
\r
4 <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
\r
5 <title>Rico LiveGrid Forms</title>
\r
6 <link href="ricoDocs.css" rel="Stylesheet" type="text/css">
\r
10 <h1>Rico LiveGrid フォームの利用</h1>
\r
14 <p>このドキュメントがちょうど ASP に言及すると同時に、同一の機能が PHP と .net プラグインによって提供されます。
\r
17 <li>ricoLiveGridForms.vbs を含む、新しい ASP ファイルを作成して下さい。
\r
19 <li>新しい ASP で、編集されるテーブルのそれぞれのフィールドを定義して下さい - 通常はフィールドごとに 1-3 行。
\r
21 <li>結果として ASP は、適当なグリッドを作成するだけで無く、隠された div に入力フォームを生成します。
\r
23 <li>その ASP は "レコードの追加/編集/削除" のエントリもポップアップメニューに追加します。
\r
25 <li>追加または編集が選択された時、そのフォームは表示されます(編集が選択されれば、項目が満たされます)
\r
27 <li>ユーザが保存ボタンをクリックする時、そのフォームは元の ASP に黙ってポストバックします。
\r
29 <li>ASP はデータベースにデータを保存し、クライアントにレスポンスを送り返します。
\r
31 <li>クライアントは、成功または失敗のメッセージをブックマークエリアに表示します
\r
34 <p>以下の二つの図解は、LiveGrid フォームページで、そしてフォームの無い LiveGrid ページで、
\r
35 どのようにリクエストとレスポンスが流れるかについて表示します。
\r
36 その二つの図解は ASP/PHP とラベルされていますが、.net にも適用されます(.net には dbClass2 が無い事を除いて)。
\r
37 <p><img src='images/asp-php-structure1.jpg'>
\r
38 <p><img src='images/asp-php-structure2.jpg'>
\r
42 <p>このクラスは、一つのテーブルのレコードの表示、挿入、更新そして削除をするのに、
\r
43 必要なすべての機能を提供します。ASP スクリプトは、次の手順に従わなければなりません。
\r
47 <li>クラスのインスタンスを一つ作成して下さい
\r
48 <pre>set oForm=new TableEditClass</pre>
\r
50 <li>SetTableName メソッドを呼んで下さい
\r
51 <pre>oForm.SetTableName "customer"</pre>
\r
53 <li>任意に CanAdd、CanEdit、CanDelete、ConfirmDelete および/または 必要に応じて RecordName プロパティを設定して下さい
\r
55 oForm.options("canAdd")=CanAdd
\r
56 oForm.options("canEdit")=CanModify
\r
57 oForm.options("canDelete")=CanDelete
\r
59 <li>TableName がビューであるか、またはプライマリーキーが定義されていない場合、編集は利用不能です
\r
60 <li>テーブルとフォームビューに見えるフィールドを、次の例外と共に、フィールドおよび列に表示するために、
\r
61 AddEntryField または AddCalculatedField を呼んで下さい。
\r
63 <li>エントリタイプ H は、決してクライアントへ送信されません。定義されたデフォルト値を取得してデータベースへ書き込みます。
\r
64 <li>FormView フィールドプロパティに "exclude" がセットされていれば、そのフィールドはテーブルだけに表示されます。
\r
65 <li>FormView フィールドプロパティに "hidden" がセットされていれば、そのデータは隠れたフォームフィールドに設定されます。
\r
66 <li>計算されたフィールドはテーブルビューにだけ表示されます(FormView=exclude と同じです)
\r
69 <li>AddEntryField または AddCalculatedField のそれぞれの呼び出しの後、他のメソッドとプロパティは、
\r
70 どのようにしてユーザにフィールドを表示するかを、コントロールするために起動する事が出来ます(例えば SortAsc)
\r
71 これらのプロパティおよびメソッドの呼び出しは、最も最近追加されたフィールドのみに適用されます。
\r
72 <li>DisplayPage を呼び出します - これはグリッドを表示するか、データベースの更新を実行します。
\r
73 <pre>oForm.DisplayPage</pre>
\r
79 <p>複数パネルや複数タブを持つフォームは Rico アコーディオンクラスを利用して、完全にサポートされます。
\r
80 そのパネルのフィールドを定義するために、AddEntryField を呼ぶ前に、単に AddPanel を呼ぶだけです。
\r
83 ' these fields appear on the first panel
\r
84 oForm.AddPanel "Panel #1"
\r
85 oForm.AddEntryField "field1", "Field #1", "T", ""
\r
86 oForm.AddEntryField "field2", "Field #2", "T", ""
\r
87 oForm.AddEntryField "field3", "Field #3", "T", ""
\r
89 ' these fields appear on the second panel
\r
90 oForm.AddPanel "Panel #2"
\r
91 oForm.AddEntryField "field4", "Field #4", "T", ""
\r
92 oForm.AddEntryField "field5", "Field #5", "T", ""
\r
93 oForm.AddEntryField "field6", "Field #6", "T", ""
\r
96 <p>あるいは panelIdx プロパティは、それが定義されるように、それぞれのフィールドにセットされる事が出来ます。
\r
97 この場合、DisplayPage の前にいつでも AddPanel は呼ばれる事が出来ます。
\r
99 ' these fields appear on the first panel
\r
100 oForm.AddEntryField "field1", "Field #1", "T", ""
\r
101 oForm.CurrentField("panelIdx")=0
\r
102 oForm.AddEntryField "field2", "Field #2", "T", ""
\r
103 oForm.CurrentField("panelIdx")=0
\r
104 oForm.AddEntryField "field3", "Field #3", "T", ""
\r
105 oForm.CurrentField("panelIdx")=0
\r
107 ' these fields appear on the second panel
\r
108 oForm.AddEntryField "field4", "Field #4", "T", ""
\r
109 oForm.CurrentField("panelIdx")=1
\r
110 oForm.AddEntryField "field5", "Field #5", "T", ""
\r
111 oForm.CurrentField("panelIdx")=1
\r
112 oForm.AddEntryField "field6", "Field #6", "T", ""
\r
113 oForm.CurrentField("panelIdx")=1
\r
115 oForm.AddPanel "Panel #1"
\r
116 oForm.AddPanel "Panel #2"
\r
122 <dt>AddPanel "パネルの見出し"
\r
123 <dd>入力フォーム上で、タブパネルのための見出しを定義します。
\r
126 <dd>グリッドを表示するか、"action" の値に応じてデータベースを更新します。
\r
128 <dt><a name='DefineAltTable'></a>DefineAltTable (TableName, FieldList, FieldData, Delim)
\r
129 <dd>次の <a href='#AltTable'>AltTable</a> の呼び出しで利用される TabId を返す関数。
\r
130 関連のあるフィールドの追加を記録するために、二番目のテーブルを定義して下さい。
\r
131 メインテーブルのキーフィールド(達)も、 AltTable に存在べきです。
\r
132 FieldList と FieldData は、二番目のテーブルに記録される定数や固定された関数を、
\r
134 Delim は、FieldList と FieldData で利用されるデリミタキャラクタを定義します。
\r
135 FieldList と FieldData は、同じ数の区切られたエントリを含まなければなりません。
\r
138 <dd>純粋な XHTML アウトプットを生成するために呼び出して下さい。
\r
140 <dt>SetDbConn (dbcls)
\r
141 <dd>dbClass を利用するためのインスタンスを定義します
\r
142 oDB と言う名前のグローバルインスタンスが存在するのなら、このメソッドの呼び出しをしないでも利用する事が出来るでしょう。
\r
148 <p>これら LiveGrid フォーム特有のものに加えて、すべての <a href="LiveGrid.html#options">LiveGrid</a> のオプションはプロパティとしてサポートされています。
\r
152 <dt>action (read only)
\r
153 <dd>実行されているカレントアクションを指定します。table、ins、upd、del
\r
155 <dt>gridVar (read only)
\r
156 <dd>クライアントサイドの LiveGrid オブジェクトの名前を返します
\r
158 <dt>bufferVar (read only)
\r
159 <dd>クライアントサイドの LiveGrid バッファオブジェクトの名前を返します
\r
162 <dd>自動的にグリッドを初期化します(データの行を作成)
\r
165 <dt>InitScript (read only)
\r
166 <dd>グリッドを初期化するための javascript コードを(文字列として)返します(AutoInit が false の時に利用する)
\r
169 <dd>テーブルビューで利用される節がどこかを指定します(オプションの)
\r
171 // only show records for the logged in user
\r
172 $oForm->TableFilter = "userid=$myuserid";
\r
176 <dd>ユーザが新しいレコードを追加する事を許可する、デフォルトは true
\r
178 <dd>ユーザがレコードを編集する事を許可する、デフォルトは true
\r
180 <dd>ユーザがレコードを削除する事を許可する、デフォルトは true
\r
182 <dd>ユーザがレコードを複製する事を許可する(既存のレコードの編集するが、新規で保存する)デフォルトは false
\r
185 <dd>この位置へのポストアップデートを行います、デフォルトはグリッドを生成したページ
\r
188 <dd>ユーザが削除ボタンをクリックした後で、確認のポップアップを表示するかどうかを指定するフラグ、
\r
190 (<a href='#ConfirmDeleteCol'>ConfirmDeleteCol</a> も見て下さい)
\r
193 <dd>デバッグメッセージを表示します、デフォルトは false
\r
196 <dd>追加、編集および削除タイトルタグのカスタマイズ用の文字列、
\r
200 <dd>セレクトボックスの文字数の最大値、デフォルトは 50。
\r
202 <dt>TableName (write only)
\r
203 <dd>表示/編集されるテーブルまたはビュー(必須)
\r
206 <dd>EntryType が N のフィールドの、新しい値を作成するためにユーザが選択した時に、
\r
207 識別するために用いる文字列。デフォルトは "___new___"。
\r
210 <dd>データベースの更新レスポンスの処理。
\r
212 <li>full - すべてのレスポンスを表示する
\r
213 <li>errors - エラーに関するすべてのレスポンスか、そうで無い場合は短いレスポンスを表示する(デフォルト)
\r
217 <dt style='color:navy;'><em>入力フォームで、タブパネルを利用する時。</em>
\r
220 <dd>タブパネルのピクセル単位の幅。デフォルトは 500。
\r
223 <dd>タブパネルのピクセル単位の高さ。デフォルトは 200。
\r
226 <dd>タブパネルの上をホバーする時の CSS クラス。デフォルトは "tabHover"。
\r
229 <dd>タブパネルを選択する時の CSS クラス。デフォルトは "tabHover"。
\r
236 <p>いくつかのフォームイベントをフックする事が可能です。
\r
240 <dd>入力フォームが表示される時、始動します。
\r
242 oForm.options("formOpen")=
\r
243 "alert('Questions? Please call the support desk.');"
\r
247 <dd>入力フォームが閉じられてすぐに、始動します。
\r
249 <dt>onSubmitResponse
\r
250 <dd>フォームがサーバに送信され、レスポンスを受け取って処理された後で、起動されます。
\r
255 <h2>フィールド定義メソッド</h2>
\r
257 <dt>AddEntryField (ColumnName, Heading, EntryTypeCode, DefaultValue)
\r
258 <dd>グリッドへ新しい列と、ASP と PHP でのポップアップフォームにより新しいエントリフィールドを追加します。
\r
262 <dd>データベーステーブルの列名(空白や角括弧を含む SQL をサポートしません、例えば [Apr 2005] )
\r
265 <dd>グリッドの列見出しやポップアップフォーム上に現れる名前
\r
268 <dd>どのように入力フォーム上に列が表示されるかについて、コントロールするコードを含む文字列
\r
271 <li><strong>S</strong>:
\r
272 データエントリ中のドロップダウンセレクトリストとして、この列を表示します。
\r
273 "SelectValues" または "SelectSql" オプションを利用して指定された値です。
\r
274 どちらも指定されなければ、列の値は "select distinct" クエリを利用して得られます。
\r
275 <li><strong>R</strong>: ラジオボタンを利用してアイテムが表示される以外は "S" と同じです。
\r
276 <li><strong>SL,RL</strong>:
\r
277 テーブルビューに検索された値を表示する以外は、S & R と同じです
\r
278 (SelectSql により指定されたクエリを利用して)。
\r
280 表示する値を取得するための SQL は "SelectSql" オプションを利用して指定します。
\r
281 <li><strong>CL</strong>:
\r
282 カスタムコントロールを利用して値が選択される以外は "SL" と同じです
\r
283 (Rico ツリーコントロールのような)。
\r
284 SelectCtl オプションは、カスタムコントロールの id を割り当てられるべきです。
\r
285 <li><strong>N</strong>:
\r
286 "S" と同じですが、ユーザが新しい値を作成する事を許します。
\r
287 典型的には "SelectValues" または "SelectSql" オプション <em>無し</em> で利用されます。
\r
288 <li><strong>H</strong>: 列はユーザから隠されます(DefaultValue が、追加と編集でテーブルに保管されます)
\r
289 <li><strong>D</strong>: これはデータフィールドです(列が null を許していたら、空白が許されます)
\r
290 <li><strong>DT</strong>: 時間も含む以外は D と同じです
\r
291 <li><strong>I</strong>: 整数値(列が null を許していて、false が必要とされるなら、空白が許されます)
\r
292 <li><strong>F</strong>: 浮動小数点数(列が null を許していて、false が必要とされるなら、空白が許されます)
\r
293 <li><strong>B</strong>: 空白の無いテキストフィールド(フィールドが空で保存をクリックするとき、ユーザはフォームビューでのポップアップメッセージを取得します)
\r
294 <li><strong>T</strong>: 標準テキストフィールド(空白が許されます)
\r
295 <li><strong>TA</strong>: テキストエリアフィールド
\r
296 <li><strong>tinyMCE</strong>: <a href="http://tinymce.moxiecode.com/">tinyMCE</a>
\r
297 ライブラリを利用するリッチテキスト編集フィールド。
\r
301 <dd>フォームビューでの列のデフォルト値
\r
304 <p>.net で AddEntryField() と同等なのは、マークアップの一部として列フィールドを宣言する事です。
\r
305 "ColData" 属性はデフォルト値を含みます。
\r
306 ex2edit.aspx からの例は、ここにあります。
\r
308 <Rico:Column runat='server' heading='Order#' width='60'
\r
309 ColName='OrderID' EntryType='B' ColData='<auto>' />
\r
312 <dt>AddEntryFieldW (ColumnName, Heading, EntryTypeCode, DefaultValue, ColWidth)
\r
313 <dd>列の(ピクセルでの)幅のためのエクストラパラメータが追加される以外は AddEntryField と同じです。
\r
315 <dt>AddCalculatedField (ColumnFormula, Heading)
\r
316 <dd>ColumnFormula は、どれも妥当な SQL 式またはサブクエリです。
\r
317 サブクエリが表示されているテーブルの列への参照を必要としているなら、
\r
318 列名はエイリアス "t." で始まらなくてはなりません
\r
319 計算されたフィールドは、フォームビューでは無く、テーブルビューに表示されます。
\r
321 <dt>AddFilterField (ColumnName, FilterValue)
\r
322 <dd>ColumnName=FilterValue の内容のレコードを表示するだけです。
\r
323 隠れたフィールドになります(エントリタイプ H)。
\r
325 <dt><a name='ConfirmDeleteCol'></a>ConfirmDeleteCol
\r
326 <dd>最も最近追加された列の内容は、削除確認メッセージに含まれます
\r
329 <dd>テーブルビューにて昇順で列をソートします(最も最近追加されたフィールドに適応されます)
\r
332 <dd>テーブルビューにて降順で列をソートします(最も最近追加されたフィールドに適応されます)
\r
337 <h2>フィールド定義プロパティ</h2>
\r
339 <p>これらの LiveGrid フォーム特有のものに加えて、すべての <a href="LiveGrid.html#column">LiveGrid</a> 列プロパティはサポートされます。
\r
344 <dd>false で、データベースに挿入するか更新する時は、列の値はバッククォートで囲まれません
\r
346 これは SQL 関数呼び出しで、列を実装する事を可能にします。例えば。
\r
348 oForm.AddEntryField "LastEditUser","","H","suser_sname()"
\r
349 oForm.CurrentField("AddQuotes")=false
\r
350 oForm.AddEntryField "LastEditDate","","H","getdate()"
\r
351 oForm.CurrentField("AddQuotes")=false
\r
355 <dd>入力フィールドが空のままにしてもよいかどうかを指定する真偽値です
\r
356 (デフォルトは、 列が null を許して EntryType が "B" で無ければ false 、そうで無い場合は true です)。
\r
358 <dt><a name='AltTable'></a>AltTable (TabId)
\r
359 <dd>代わりのテーブルにフィールドは保存されるべきである事を指定し、
\r
360 TabId は以前の <a href='#DefineAltTable'>DefineAltTable</a> の呼び出しによって返される値でなければなりません。
\r
363 <dd>エントリタイプが "TA" の列のための、フォームビューの時に
\r
364 テキストエリアに表示する行数です(デフォルト 4)
\r
367 <dd>true なら、グリッドはその列のデフォルト値によってフィルタされます(デフォルト = false)
\r
370 <dd>エントリタイプが "TA" の列のための、フォームビューの時に
\r
371 テキストエリアに表示する列数です(デフォルト 80)
\r
374 <dd>指定されたテキストを含んでいるタイトルタグを作成します(フォームビューのみ)。
\r
375 そして、ユーザがフィールドラベルの上をホバーするなら、バルーンヘルプとしてこのテキストを見るでしょう。例えば。
\r
377 oForm.CurrentField("Help")="Date must be entered in mm/dd/yyyy format"
\r
382 ユーザエントリは、その指定されたパターンにマッチする事を確実にするためにチェックされます。
\r
385 <li>"email" - メールアドレスを検証するためのテスト
\r
386 <li>"float-unsigned" - 符号無し浮動小数点(実)数を検証するためのテスト
\r
387 <li>"float-signed" - 符号付き浮動小数点(実)数を検証するためのテスト(EntryType が "F" の時、これがデフォルトです)
\r
388 <li>"int-unsigned" - 符号無し整数を検証するためのテスト
\r
389 <li>"int-signed" - 符号付き整数を検証するためのテスト(EntryType が "I" の時、これがデフォルトです)
\r
391 <br>いつでも、パターンを指定するヘルプエントリが含まれる事が推薦されます。
\r
392 フィールドが検証に失敗したなら、そのヘルプテキストは、ユーザに表示されるエラーメッセージに含まれます。
\r
395 oForm.CurrentField("Help")="Enter date as mm/dd/yyyy"
\r
396 oForm.CurrentField("pattern")="^\\d{1,2}/\\d{1,2}/\\d{4}$"
\r
400 <dd>EntryType が "I" 、"F" 、そして "D" のフィールドの、最大/最少の許される値を指定します。
\r
403 oForm.AddEntryField "field1", "Field #1", "I", "0"
\r
404 oForm.CurrentField("min")=1
\r
405 oForm.CurrentField("max")=10
\r
406 oForm.CurrentField("Help")="Enter a value between 1 and 10"
\r
408 oForm.AddEntryField "field2", "Field #2", "D", Date()
\r
409 oForm.CurrentField("min")="2000-01-01"
\r
410 oForm.CurrentField("max")="2099-12-31"
\r
411 oForm.CurrentField("Help")="Enter a value in the 21st century!"
\r
415 <dd>挿入を実行する時は、データベースに単にこのフィールドを書いて下さい(デフォルト=false)。
\r
417 oForm.AddEntryField "CreateDate","","H","getdate()"
\r
418 oForm.CurrentField("AddQuotes")=false
\r
419 oForm.CurrentField("InsertOnly")=true
\r
423 <dd>更新を実行する時は、データベースに単にこのフィールドを書いて下さい(デフォルト=false)。
\r
425 oForm.CurrentField("UpdateOnly")=true
\r
429 <dd>true なら、データはエントリフォームで表示されますが、変更は出来ず、テキストは灰色です(デフォルト = false)。
\r
432 <dd>N、S、そして R の EntryType のために、ユーザをフォームビューに案内する選択を指定して下さい。
\r
433 供給されるなら、カンマで区切られた値の文字列で無ければなりません。例えば。
\r
435 oForm.CurrentField("SelectValues")="Y,N"
\r
439 <dd>SL 、CL 、そして RL の EntryType のために、SQL 検索ステートメントを指定します。
\r
440 その検索ステートメントは 2 つの列を返さなければなりません。
\r
441 一つ目はコードで、そして二つ目は値または説明のテキストです。例えば。
\r
443 oForm.CurrentField("SelectSql")="select ID,Name from Customers"
\r