- - PR -
C1FlexGridのセルをComboBoxとして使用する時のIndex値取得方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-05 15:57
C1FlexGridのセルをComboBoxとして使用する場合なのですが、
選択した項目を取得する時に、ComboListプロパティに設定した 値しか取得できなくて困っています。 選択した項目のIndex値を取得する方法はないでしょうか? コーディングは下のようになっています。 ■ComboListプロパティ設定時 C1FlexGrid1.Cols(x).ComboList = " |A|B|B|C|" ■選択項目の取得時 strTmp = C1FlexGrid1.Rows(i).Item(x) この場合Aを選択した時に、Aを取得できるのですが、 AのIndex値として1が取得できないでしょうか? 現状はBを選択した時に、1つ目のBと、2つ目のB のどちらが選択されたのか区別ができなくなってしまいます。 宜しくお願い致します。 | ||||
|
投稿日時: 2006-04-05 16:13
COM 時代の ComboIndex プロパティは廃止されたので、
DataMap プロパティから ID 文字として取得するしかなかったかと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-04-05 17:08
じゃんぬねっとさん 迅速なレスありがとうございます。 さっそくDataMapプロパティにHashtableを設定して試そうとしたのですが、 下のようなキーを設定しようとした時に、Bが重複キーとなってしまい、 設定できませんでした。 ■ComboListプロパティ設定時 C1FlexGrid1.Cols(x).ComboList = " |A|B|B|C|" ■Hashtable設定時 Dim ComboHash as Hashtable ComboHash = new Hashtable() ComboHash.add(" ","0") ComboHash.add("A","1") ComboHash.add("B","2") ComboHash.add("B","3") '<--ここでエラーになってしまいます。 ComboHash.add("C","4") C1FlexGrid1.Cols(x).DataMap = ComboHash DataMapプロパティの設定方法が間違っていましたら申し訳ありません。 何か他に方法がありますでしょうか? | ||||
|
投稿日時: 2006-04-05 17:12
うん、そりゃそうでしょう。(^^) 第 1 引数は Key ですから。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-04-05 17:24
な、なるほど・・(−−; ご指摘の通り第一引数と第二引数を入れ替えたら設定できました。 ありがとうございます。 ちなみにこの状態でBを選択した場合に、対応する2 or 3はどのように 取得するのでしょうか? 宜しくお願い致します。 ■Hashtable設定時【修正版】 Dim ComboHash as Hashtable ComboHash = new Hashtable() ComboHash.add("0"," ") ComboHash.add("1","A") ComboHash.add("2","B") ComboHash.add("3","B") ComboHash.add("4","C") C1FlexGrid1.Cols(x).DataMap = ComboHash | ||||
|
投稿日時: 2006-04-05 17:33
ComboBox で同じ表題のアイテムなんて作らないものだと思いますが... (^-^) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-04-05 17:48
まったくもってご指摘の通りだと思います。(−−; 同じ表題のアイテムを表示される順番で判断するというのは かなり無理があると思うのですが・・ やはり同じ表題のアイテムの区別は、C1FlexGridのコンボでは、 不可能なのでしょうか? | ||||
|
投稿日時: 2006-04-06 10:55
既に解決済みかも知れませんが
SortedList sl = new SortedList(); sl.Add(0, "A"); sl.Add(1, "B"); sl.Add(2, "B"); sl.Add(3, "C"); C1FlexGrid1.Cols[col].DataType = typeof(int); C1FlexGrid1.Cols[col].DataMap = sl; この状態で3番目を選択した場合 C1FlexGrid1[row, col] の値が2 C1FlexGrid1.Cols[col].DataMap[C1FlexGrid1[row, col]]の値がB になると思います。 |