我想用矩阵填充组合框
矩阵
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
我该怎么做?
答案 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";