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

这是一个简单的辅助方法,可用于从二维数组中获取一列:

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 的某个对象的单维数组时,您正在使用多维数组。

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 回答