ComboBox 数据绑定技巧
ComboBox常用的绑定是绑定个DataSet给它。而绑定个IList给它呢,就有个技巧了。
如果你的Ilist是List<IDictionary>的,就不行了,ComboBox的DisplayMember, ValueMember需要从对象的property里获取值,而IDictionary的只是Key,所以不行。如果你想绑定IList 或 ArrayList的话,就得用一个实体类(Java或ORM里的概念)来作为数据的存放对象,然后把对象Add到列表里,然后就可以给DataSource赋值了。
另外,很多人不知道怎样根据读取的value来选定列表,其实用
ComboBox.SelectedValue = "xxx"就可以选定的了。
下面有个蠢方法,是我发现这个方法前使用的
IEnumerator enumer = ORG_TYPE_ID.Items.GetEnumerator();
int i = 0;
enumer.Reset();
while (enumer.MoveNext())
{
DataRowView dt = (DataRowView)enumer.Current;
if (dt["ORG_TYPE_ID"].ToString().Equals(drv["ORG_TYPE_ID"].ToString()))
{
ORG_TYPE_ID.SelectedIndex = i;
}
i++;
}
如果你的Ilist是List<IDictionary>的,就不行了,ComboBox的DisplayMember, ValueMember需要从对象的property里获取值,而IDictionary的只是Key,所以不行。如果你想绑定IList 或 ArrayList的话,就得用一个实体类(Java或ORM里的概念)来作为数据的存放对象,然后把对象Add到列表里,然后就可以给DataSource赋值了。
定义一个类,有两个属性
public class ValueObject{
private string _name;
private string _value;
internal Name
{
get { return _value; }
set { _value = value; }
}
}
然后,用一个
ArrayList list = new ArrayList();
for(int i=0; i<3; i++)
{
ValueObject vo = new ValueObject();
vo.Name = "a";
vo.Value = "1";
list.add(vo);
}
ComboBox cbb = new ComboBox();
cbb.DataSource = list;
cbb.DisplayMember = "Name";
cbb.ValueMember = "Value";
这样就OK了,取值只要cbb.SelectedValue就取到了。
如果有做过java的话,这VO的作用就会很清楚的了。
public class ValueObject{
private string _name;
private string _value;
internal Name
{
get { return _value; }
set { _value = value; }
}
}
然后,用一个
ArrayList list = new ArrayList();
for(int i=0; i<3; i++)
{
ValueObject vo = new ValueObject();
vo.Name = "a";
vo.Value = "1";
list.add(vo);
}
ComboBox cbb = new ComboBox();
cbb.DataSource = list;
cbb.DisplayMember = "Name";
cbb.ValueMember = "Value";
这样就OK了,取值只要cbb.SelectedValue就取到了。
如果有做过java的话,这VO的作用就会很清楚的了。
另外,很多人不知道怎样根据读取的value来选定列表,其实用
ComboBox.SelectedValue = "xxx"就可以选定的了。
下面有个蠢方法,是我发现这个方法前使用的












【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架