Thread Rating:
  • 565 Vote(s) - 2.66 Average
  • 1
  • 2
  • 3
  • 4
  • 5
RecordGrid でDropdownList を表示
12-24-2013, 01:36 PM,
#6
RE: RecordGrid でDropdownList を表示
列挙体や、StandardStringDomain の allowable-value を使う方法では、
マスタから区分の一覧を取得して、その一覧をリストに表示する、
といった、動的なリストの生成が難しいと思っています。
(RecordField.domain が後で変更可能であれば良いのですが・・・)

また、DropdownList のリストアイテムに ListValueitem を利用して、
コードとラベルを分けて表示する、ということが出来ません。

create-editor で、生成された DropdownList にアイテムを設定する方法だと、
下記のような感じになるかと思います。


Code:
{define-class public CustomDropdownCell {inherits StandardDropdownCell}
  ||DropdownList のリストアイテム
  field public list-items:{Array-of ListValueItem} = {new {Array-of ListValueItem}}
  {constructor public {default
                          list-items:#{Array-of ListValueItem} =null
                      }
    {if-non-null list-items then
        set self.list-items = list-items
    }
    {construct-super}
  }
  ||ドロップダウンリストに、アイテムを設定
  {method public {create-editor}:DropdownList
    def cell-dl = {super.create-editor}
    {for itm in self.list-items do
        {cell-dl.append itm}
    }
    {return cell-dl}
  }
  ||リストで選択されたアイテムのラベルを文字列として取得
  {method public {format x:any}:String
    let txt:String = ""
    def val = {self.get-data}
    def found-index =
    {self.list-items.find
        {ListValueItem val},
        equality-proc =
            {proc {itm1:ListValueItem, itm2:ListValueItem}:bool
                {if itm1.init-value == itm2.init-value then
                    {return true}
                 else
                    {return false}
                }
            }
    }
    {if found-index > -1 then
        def select-item = {self.list-items.get found-index}
        set  txt = {select-item.get-text}

    }
    {return txt}
  }
}
{define-class public CustomDropdownColumn {inherits RecordGridColumn}
  {constructor public {default
                          list-items:#{Array-of ListValueItem} =null,
                          ...}
    {construct-super {splice ...}}
    set self.cell-spec =
        {proc {col:RecordGridColumn}:RecordGridCell
            def cell = {CustomDropdownCell list-items = list-items}
            {return cell}
        }
  }
}
{let people:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField "First", domain = String},
            {RecordField "Last", domain = String},
            {RecordField "Age", domain = int}
        },
        {RecordData First = "John", Last = "Smith", Age = 25},
        {RecordData First = "Jane", Last = "Smith", Age = 29},
        {RecordData First = "Jane", Last = "Jones", Age = 28}
    }
}
{def grid =
    {RecordGrid
        record-source = people,
        {CustomDropdownColumn
            "First",
            list-items =
                {{Array-of ListValueItem}
                    {ListValueItem "", label = ""},
                    {ListValueItem "John", label = "ジョン"},
                    {ListValueItem "Jane", label = "ジェーン"},
                    {ListValueItem "Joe", label = "ジョー"}
                }
        }

    }
}
{value grid}

グリッド内のドロップダウンリストを表示する方法で、
もっとよい方法があれば教えてください。


Messages In This Thread
RecordGrid でDropdownList を表示 - by umemura - 07-26-2011, 08:44 AM
RE: RecordGrid でDropdownList を表示 - by umemura - 12-24-2013, 01:36 PM

Possibly Related Threads...
Thread Author Replies Views Last Post
  RecordGrid の行の実際の高さの調べ方 kay 2 3,117 03-01-2016, 06:14 PM
Last Post: kay
  RecordGrid 列の表示/非表示について Yudai-s 2 4,383 05-19-2015, 06:54 PM
Last Post: Yudai-s
  RecordGrid のセル単位のフォーカス制御方法 kay 2 3,286 03-06-2015, 06:34 PM
Last Post: kay
  RecordGrid のセルのフォーカス可否制御 kay 2 3,579 03-02-2015, 07:56 PM
Last Post: kay
  RecordGrid の縦のスクロールバー umemura 3 5,154 01-20-2014, 10:38 AM
Last Post: umemura
  RecordGrid のパフォーマンスについて umemura 8 12,787 01-06-2014, 02:34 PM
Last Post: umemura
  RecordGrid の NavigationPanel について umemura 2 5,117 08-23-2011, 08:52 AM
Last Post: c-s
  RecordGrid で オートコンプリート umemura 1 4,744 07-29-2011, 10:58 PM
Last Post: umemura
  RecordGrid での右詰め umemura 3 6,012 07-29-2011, 01:32 PM
Last Post: c-s
Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('157')