コンボコントロールに項目を設定する方法について説明します。
|
コンボコントロールでは、サーバーにポストバックすることなく、クライアント側で項目の追加や削除を行うことが可能です。
クライアント側では、ListItemオブジェクトで生成された項目をAddItemメソッドによりコントロールに追加します。 また、InsertItem、RemoveItem、ClearItemsメソッドにより、項目の挿入、削除等も可能です。
サブ項目は、ListSubItemオブジェクトを使用して作成し、ListItemオブジェクトのAddSubItemメソッドにより項目に追加します。サブ項目についてもInsertSubItem、RemoveSubItem、ClearSubItemsメソッドにより挿入、削除が可能です。
クライアント側で項目の追加や削除を行うには、下記の点にご注意ください。
|
// 追加する一つ目の項目のインスタンスを生成します。 var item1 = new GCIM.ListItem(); // サブ項目を2つ設定し、項目に追加します。 var subitem1_1 = new GCIM.ListSubItem("項目1-1"、"center"、"top"); var subitem1_2 = new GCIM.ListSubItem("項目1-2"、"center"、"top"); item1.AddSubItem(subitem1_1); item1.AddSubItem(subitem1_2); // 追加する二つ目の項目のインスタンスを生成します。 var item2 = new GCIM.ListItem(); // サブ項目を2つ設定し、項目に追加します。 var subitem2_1 = new GCIM.ListSubItem("項目2-1"、"center"、"top"); var subitem2_2 = new GCIM.ListSubItem("項目2-2"、"center"、"top"); item2.AddSubItem(subitem2_1); item2.AddSubItem(subitem2_2); // コンボコントロールに項目を追加します。 var combo = FindIMControl("GcComboBox1"); combo.AddItem(item1); combo.AddItem(item2);
// 項目を削除します。 var combo = FindIMControl("GcComboBox1"); combo.RemoveItem(combo.GetSelectedItem());
7.0J以前のバージョンでは、ComboItemオブジェクトで作成された項目をGetItemsメソッドから参照されるComboItemCollectionコレクションに追加し、 サブ項目はSubItemオブジェクトで作成されComboItemオブジェクトのGetSubItemsが参照する配列に追加していました。
8.0Jにおいても同様の実装が可能です。ただし、ComboItemやSubItemオブジェクトはJavaScriptリファレンスには記載されていませんので、ご注意ください。
また、7.0J以前は項目の追加や削除を行ったあとは、RefreshItemsクライアントメソッドを実行する必要がありましたが、8.0J以降はこれが不要となりました。RefreshItemsメソッドを実行しなくても項目は更新され、ポストバック後も維持されます。
以下は、7.0J以前のバージョンでの実装例ですが、8.0Jでも正しく動作します。
// サブ項目を3つ持つ項目1を設定します。 var item1 = new ComboItem(); item1.SubItems[0] = new SubItem(); item1.SubItems[0].SetValue("項目1-1"); item1.SubItems[1] = new SubItem(); item1.SubItems[1].SetValue("項目1-2"); item1.SubItems[2] = new SubItem(); item1.SubItems[2].SetValue("項目1-3"); // サブ項目を3つ持つ項目2を設定します。 var item2 = new ComboItem(); item2.SubItems[0] = new SubItem(); item2.SubItems[0].SetValue("項目2-1"); item2.SubItems[1] = new SubItem(); item2.SubItems[1].SetValue("項目2-2"); item2.SubItems[2] = new SubItem(); item2.SubItems[2].SetValue("項目2-3"); // コントロールに項目を追加します。 var ComboItems = FindIMControl("GcComboBox1").GetItems(); ComboItems.Add(item1); ComboItems.Add(item2);
Imports GrapeCity.Web.Input.IMCombo Imports GrapeCity.Web.Input.Core.ListBox Imports System.Diagnostics ' コントロールにカラムを設定します。 GcComboBox1.ListBox.Columns.Clear() GcComboBox1.ListBox.Columns.Add(New ListColumn("カラム1")) GcComboBox1.ListBox.Columns.Add(New ListColumn("カラム2")) GcComboBox1.ListBox.Columns.Add(New ListColumn("カラム3")) ' コントロールに項目を追加します。 GcComboBox1.Items.Add(New ComboItem(New SubItem("AAA"), New SubItem("abcde"), New SubItem(DateTime.Parse("2013/12/01")))) GcComboBox1.Items.Add(New ComboItem(New SubItem("BBB"), New SubItem("bcdef"), New SubItem(DateTime.Parse("2013/12/15")))) GcComboBox1.Items.Add(New ComboItem(New SubItem("CCC"), New SubItem("cdefg"), New SubItem(DateTime.Parse("2013/11/01")))) GcComboBox1.Items.Add(New ComboItem(New SubItem("DDD"), New SubItem("defgh"), New SubItem(DateTime.Parse("2013/11/15")))) ' FindStringメソッドを使って検索します Dim matchedItem As MatchedComboItemCollection Dim item As ComboItem matchedItem = GcComboBox1.FindString(1, "bcd") For Each item In matchedItem ' 検索結果をデバッグウィンドウに表示します。 Debug.WriteLine(item.Text) Next
using GrapeCity.Web.Input.IMCombo; using GrapeCity.Web.Input.Core.ListBox; using System.Diagnostics; // コントロールにカラムを設定します。 GcComboBox1.ListBox.Columns.Clear(); GcComboBox1.ListBox.Columns.Add(new ListColumn("カラム1")); GcComboBox1.ListBox.Columns.Add(new ListColumn("カラム2")); GcComboBox1.ListBox.Columns.Add(new ListColumn("カラム3")); // コントロールに項目を追加します。 GcComboBox1.Items.Add(new ComboItem(new SubItem("AAA"), new SubItem("abcde"), new SubItem(DateTime.Parse("2013/12/01")))) GcComboBox1.Items.Add(new ComboItem(new SubItem("BBB"), new SubItem("bcdef"), new SubItem(DateTime.Parse("2013/12/15")))) GcComboBox1.Items.Add(new ComboItem(new SubItem("CCC"), new SubItem("cdefg"), new SubItem(DateTime.Parse("2013/11/01")))) GcComboBox1.Items.Add(new ComboItem(new SubItem("DDD"), new SubItem("defgh"), new SubItem(DateTime.Parse("2013/11/15")))) // FindStringメソッドを使って検索します。 MatchedComboItemCollection matchedItem; matchedItem = GcComboBox1.FindString(1, "bcd"); foreach (ComboItem item in matchedItem) { // 検索結果をデバッグウィンドウに表示します。 Debug.WriteLine(item.Text); }
var combo = FindIMControl("GcComboBox1"); combo.SetSelectedIndex(combo.FindString(0, "b", 0));
Imports GrapeCity.Web.Input.IMCombo Imports GrapeCity.Web.Input.Core Imports GrapeCity.Web.Input.Core.ListBox ' カラムを追加します。 GcComboBox1.ListBox.Columns.Add(New ListColumn("カラム1")) GcComboBox1.ListBox.Columns.Add(New ListColumn("カラム2")) GcComboBox1.ListBox.Columns.Add(New ListColumn("カラム3")) // 項目を追加します。 GcComboBox1.Items.Add(New ComboItem(New SubItem("AAA"), New SubItem("ccc"), New SubItem("444"))) GcComboBox1.Items.Add(New ComboItem(New SubItem("CCC"), New SubItem("bbb"), New SubItem("111"))) GcComboBox1.Items.Add(New ComboItem(New SubItem("DDD"), New SubItem("ddd"), New SubItem("333"))) GcComboBox1.Items.Add(New ComboItem(New SubItem("BBB"), New SubItem("aaa"), New SubItem("222"))) ' インデックス1のカラムで昇順にソートします。 GcComboBox1.ListBox.SortColumnIndex = 1 GcComboBox1.ListBox.Columns(1).SortOrder = SortOrder.Ascending
using GrapeCity.Web.Input.IMCombo; using GrapeCity.Web.Input.Core; using GrapeCity.Web.Input.Core.ListBox; // カラムを追加します。 GcComboBox1.ListBox.Columns.Add(new ListColumn("カラム1")); GcComboBox1.ListBox.Columns.Add(new ListColumn("カラム2")); GcComboBox1.ListBox.Columns.Add(new ListColumn("カラム3")); // 項目を追加します。 GcComboBox1.Items.Add(new ComboItem(new SubItem("AAA"), new SubItem("ccc"), new SubItem("444"))); GcComboBox1.Items.Add(new ComboItem(new SubItem("CCC"), new SubItem("bbb"), new SubItem("111"))); GcComboBox1.Items.Add(new ComboItem(new SubItem("DDD"), new SubItem("ddd"), new SubItem("333"))); GcComboBox1.Items.Add(new ComboItem(new SubItem("BBB"), new SubItem("aaa"), new SubItem("222"))); // インデックス1のカラムで昇順にソートします。 GcComboBox1.ListBox.SortColumnIndex = 1; GcComboBox1.ListBox.Columns[1].SortOrder = SortOrder.Ascending;