用组合填充组合框

时间:2013-06-04 17:36:20

标签: c#

我想用矩阵填充组合框

矩阵

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

我该怎么做?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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";