0

コンボボックスをマトリックスで埋めたい

マトリックス:

object[,] codes = new object[,] { 
            { "1", "BANK S/A" }, 
            { "2", "BANK Center" }, 
            { "3", "BANK AMAZON S/A" }}; 

私のコンボボックスを埋める:

comboBank.DataSource = codes;
comboBanco.DataBind();

しかし、私のコンボボックスにはアイテムが表示されます

1
BANK S/A
2
Bank Center
3
Bank Amazon S/A

このコンボボックスにIDではなく名前だけを入力し、これらのコンボボックスのValueプロパティにIDが必要です。

コンボボックスに欲しいもの

Bank S/A
Bank Center
Bank Amazon S/A

どうやってやるの ?

4

2 に答える 2

1

2 次元配列から 1 つの列を取得するために使用できる簡単なヘルパー メソッドを次に示します。

public static IEnumerable<T> GetColumn<T>(T[,] array, int column)
{
    for (int i = 0; i < array.GetLength(0); i++)
        yield return array[i, column];
}

それを使用して、コードを次のように変更できます。

comboBank.DataSource = codes.GetColumn(1);

そうは言っても、ここでの本当の問題は、int と string の両方を含むオブジェクトの 1 次元配列が必要な場合に、多次元配列を使用していることです。

public class Code
{
    public int ID { get; set; }
    public string Name { get; set; }
}

Code[] codes = new Code[]{
    new Code(){ID=1, Name="BANK S/A"},
    new Code(){ID=2, Name="BANK Center"},
    new Code(){ID=3, Name="BANK AMAZON S/A"},
};

厳密に型指定された配列を取得したらSelect、表示するプロパティを選択するかDisplayMember、コンボ ボックスの を設定するために使用できます。

于 2013-06-04T17:39:03.220 に答える
1

たぶん、次のようなことを試すことができます:

List<dynamic> list = new List<dynamic>();

for(int i = 0; i < codes.Lenght; i++) 
   list.Add(new { Value = code[i][0], Text = code[i][1] });

comboBox.DataSource = list;
comboBox.DisplayMember = "Text";
comboBox.ValueMember = "Value"; 
于 2013-06-04T17:40:06.803 に答える