- PR -

C1FlexGridのセルをComboBoxとして使用する時のIndex値取得方法

投稿者投稿内容
ブンタ改
会議室デビュー日: 2006/04/05
投稿数: 7
投稿日時: 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
のどちらが選択されたのか区別ができなくなってしまいます。

宜しくお願い致します。




じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-05 16:13
COM 時代の ComboIndex プロパティは廃止されたので、
DataMap プロパティから ID 文字として取得するしかなかったかと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ブンタ改
会議室デビュー日: 2006/04/05
投稿数: 7
投稿日時: 2006-04-05 17:08
引用:

じゃんぬねっとさんの書き込み (2006-04-05 16:13) より:
COM 時代の ComboIndex プロパティは廃止されたので、
DataMap プロパティから ID 文字として取得するしかなかったかと思います。




じゃんぬねっとさん 
迅速なレスありがとうございます。

さっそく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プロパティの設定方法が間違っていましたら申し訳ありません。

何か他に方法がありますでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-05 17:12
引用:

ブンタ改さんの書き込み (2006-04-05 17:08) より:

ComboHash.add("B","2")
ComboHash.add("B","3") '<--ここでエラーになってしまいます。


うん、そりゃそうでしょう。(^^)
第 1 引数は Key ですから。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ブンタ改
会議室デビュー日: 2006/04/05
投稿数: 7
投稿日時: 2006-04-05 17:24
引用:

うん、そりゃそうでしょう。(^^)
第 1 引数は Key ですから。



な、なるほど・・(−−;
ご指摘の通り第一引数と第二引数を入れ替えたら設定できました。
ありがとうございます。

ちなみにこの状態で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
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-05 17:33
引用:

ブンタ改さんの書き込み (2006-04-05 17:24) より:

ちなみにこの状態でBを選択した場合に、対応する2 or 3はどのように取得するのでしょうか?


ComboBox で同じ表題のアイテムなんて作らないものだと思いますが... (^-^)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ブンタ改
会議室デビュー日: 2006/04/05
投稿数: 7
投稿日時: 2006-04-05 17:48
引用:

じゃんぬねっとさんの書き込み (2006-04-05 17:33) より:
ComboBox で同じ表題のアイテムなんて作らないものだと思いますが...



まったくもってご指摘の通りだと思います。(−−;

同じ表題のアイテムを表示される順番で判断するというのは
かなり無理があると思うのですが・・

やはり同じ表題のアイテムの区別は、C1FlexGridのコンボでは、
不可能なのでしょうか?
ghornety
会議室デビュー日: 2005/08/03
投稿数: 6
投稿日時: 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
になると思います。

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