2013-06-04 78 views
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 

我怎么能这样做?

回答

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

也许你可以尝试这样的事:

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"; 
+0

他有一个多维数组,而不是一个交错数组。 – Servy