您的位置:首页 > 其它

ComboBox控件“设置 DataSource 属性后无法修改项集合”的解决

2015-07-18 23:34 591 查看
最近自己在编写一个Winform的测试管理工具,遇到两个问题:1、两个combox控件的联动;2、联动效果实现后,更换第一个combox控件的值时,系统提示“设置 DataSource 属性后无法修改项集合”的错误问题。自己在网上查了很多,最终还是解决了以上问题

需求描述:实现两个combox控件的联动功能,例如:combox1有“瀑布式”、“迭代式”两个选项,combox2根据combox1的数据在数据库中查询,然后绑定到combox2,第一次选择combox1的值时,combox2的值有正确绑定,但再次更改combox1的值时,系统就报“设置 DataSource 属性后无法修改项集合”的错误

解决方法:

问题一:通过combox控件的SelectedIndexChanged方法实现多个下拉控件的数据联动

问题二:由于DataSet 默认为空引用,因此在清除下拉列表项的时候首先需将ComboBox.DataSource付空值“null”。

代码如下:

/// <summary>
/// 项目类型选值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cbProType_SelectedIndexChanged(object sender, EventArgs e)
{
ProStageData(cbProStage, cbProType.Text);
}

/// <summary>
/// 获取项目阶段数据
/// </summary>
/// <param name="box">ComboBox类型控件名称</param>
/// <param name="ProType">项目类型</param>
private static void ProStageData(ComboBox box,string ProType)
{
CtbProStageBLL CproStage = new CtbProStageBLL();
List<CtbProStage> cProStageList = new List<CtbProStage>();
cProStageList = CproStage.GetModelList(" ProType='" + ProType + "'");

///清空节点
box.DataSource = null;
box.Items.Clear();
List<CtbProStage> clist = new List<CtbProStage>();

//使其Combox的第一项为空值
CtbProStage pf = new CtbProStage();
pf.ProStageName = "";
clist.Add(pf);

///添加一级节点
foreach (var prostage in cProStageList)
{   ///创建节点
CtbProStage pg = new CtbProStage();
pg.ProStageName = prostage.ProStageName;
clist.Add(pg);
}

box.DataSource = clist;
box.DisplayMember = "ProStageName";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: