- PR -

コンボボックスのコード保持について

1
投稿者投稿内容
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2007-07-17 11:12
いつも参考にさせていただいています。
コンボボックスにDBからselectしたemployeeNameとemployeeCodeをデータセットに
格納しています。

クラスを作成し、employeeNameとemployeeCodeを保持し、
コンボボックスにはemployeeNameだけを表示させるようにすることで、
updateやinsertするようにしています。

いろいろ悩んで、下記のようなコードで実現させたのですが、
CmdEditorクラスのItems.Addで何が格納されているのか、
GetNameクラスのToString()メソッドがどのタイミングで発生しているのか、
よく分かりません。

動いているんですけど、中身が分かっていないと、
後々困ることも多いので、質問させていただきました。

コード:
Public MustInherit Class CmdEditor

    Protected ComboBoxEditor As New Editors.ComboBoxEditor
    Protected myDataset As New DataSet


    Protected Overridable Function getData(ByVal Edi As Editors.ComboBoxEditor) As Editors.ComboBoxEditor

        Dim i As Integer
        For i = 0 To myDataset.Tables(0).Rows.Count - 1
            With Edi.Items

                .Add(New GetName(myDataset.Tables(0).Rows(i)("EMPLOYEE_CO"), _
                                    myDataset.Tables(0).Rows(i)("EMPLOYEE_NA")))

            End With
        Next

        Return Edi

    End Function

    Class GetName

        Public employeeCode$, employeeName$

        Sub New(ByVal code$, ByVal name$)
            Me.employeeCode = code
            Me.employeeName = name
        End Sub

        Public Overrides Function ToString() As String
            Return employeeName
        End Function

    End Class
End Class

よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2007-07-17 11:58
(1) CmdEditorクラスのItems.Addで何が格納されているのか
→ GetNameクラスのインスタンス。
.NETではComboBoxの要素としてオブジェクトなら何でも指定できます。

(2) GetNameクラスのToString()メソッドがどのタイミングで発生しているのか
→ .NETではComboBoxの要素としてオブジェクトなら何でも指定できますが、
そうするとコンボボックスの表示上にはその項目をどう表示すればいいのか困りますよね。
そこでデフォルトではObjectであれば確実に存在するToStringメソッドの戻り値を
表示名称に使用すると決まっています。
この辺は、ComboBoxのDisplayMember、ValueMemberプロパティでカスタマイズできます。

<追記>
KIさんよりご指摘。
>書いている間によねKENさんに先を越されましたが、
>.NET の ComboBox の話ではありませんよね。

思いっきりComboBoxだと思って書いてしまいましたorz。
原理はおそらく標準のComboBoxに似せたものだろうとは思いますが、
El Tabelle の話なら、そのヘルプを確認しないとわかりませんね。
</追記>


[ メッセージ編集済み 編集者: よねKEN 編集日時 2007-07-17 13:02 ]
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-07-17 12:03
回答ではありません。

質問するときは環境を書かないと回答する人も混乱しますよ。
いきなり ComboBoxEditor とか出されても…
検索してみたところ GrapeCity の El Tabelle の話のようですが。
そうならそう書きましょう。
サードパーティ製のライブラリですから、回答できる人も限られますので、
件名に El Tabelle と書いておいたほうがよいかも知れません。

私は使ったことないので、回答はパスします。
.NET の標準の ComboBox と動作原理は同じっぽいので、
回答できなくもなさそうですが…


書いている間によねKENさんに先を越されましたが、
.NET の ComboBox の話ではありませんよね。
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2007-07-17 13:01
GrapeCity社のEl TabelleはMultiRowのみ利用したことがありますけど、
ComboBoxの動作は.Netの標準ComboBoxと似ているモノです。

Items関連がまさにそれで、Addするときは標準ComboBoxと同様に
インスタンスを放り込むことができますが、
Itemsから取得する際にはStringになって戻ってきます。
これはEl Tabelleの拡張ComboBoxでも同じでした。

最新のSP4環境では未確認ですけど。
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2007-07-17 15:44
よねKENさん、KIさん、Ahfさん
レスありがとうございました。

また、El TabelleのComboboxの話だと記述していないくて申し訳ありませんでした。
ただ、皆さんからご教授いただいたおかげで、標準のコンボボックスの仕様に関しては理解することが出来ましたので、標準との違いという視点で、El Tabelleのヘルプを見たり、問合せをしたりしようと思います。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)