C1DataGrid问题
打扰了,想请教另外一个问题,现在DataGrid的列表只显示了6行数据,但m_NewData与cmbCol的列表参数值是对应的。如何在添加m_NewData后,当改变cmbCol选择的值时,新添加的列对应行的值也改变?
回复 1楼安心海叶的帖子
下午帮您看一下,午饭时间......:p6qoz: 回复 2楼KNight的帖子
好的~先表示感谢啦~ 回复 3楼安心海叶的帖子
我理解的是,您想要实现后面扩展的列和第一列的下拉框选项 形成类似级联菜单,当下拉框选择改变时,后面扩展列的值对应改变,是吧?
其实代码里已经实现好了,就是有一个地方不对,改一下就好了;
在CreateCustomCol()方法中:
刚开始定义了扩展列的绑定 newCol.Binding = new Binding(cmbCol.SortMemberPath);
但是在ComboBox的点击事件里,是会根据ComboBox的Tag进行重新绑定的;
而Tag定义的是 string bindingName = propertyName + "[" + index + "]"; 这个值,不是你后面改成的 cmbCol.SortMemberPath ;
造成当你没点击CheckBox时,是会有级联效果的;当你点击过一次之后,扩展列的绑定内容就不会再改变了;
只需要将其中的bindingName设置成你要绑定的名称 cmbCol.SortMemberPath 即可;
// string bindingName = propertyName + "[" + index + "]";
string bindingName = cmbCol.SortMemberPath;
m_NewExtendCols = newCol;
newCol.Binding = new Binding(cmbCol.SortMemberPath); 回复 4楼KNight的帖子
您理解的是对的,但是cmbCol下来框改变时,后面扩展列的对应值应该是m_NewData数组中对应的值,而不应该是1,2,3,4,5,6,7,8,9,10,11...的结果,请指导? 回复 5楼安心海叶的帖子
这种级联需要手动处理吧,就是在第一列下拉框选择项改变时,需要手动更新m_NewData中对应的数据的;
我理解的是新增的数据 m_NewData 应该是和第一列的下拉框是一一对应的关系是吧? 回复 6楼KNight的帖子
是的,是一一对应的关系。这样下拉框改变参数时,DataGrid相应行显示对应的参数 回复 6楼KNight的帖子
我查找了DataGridComboBoxColumn的处理函数,没有相应的选择项改变事件处理函数...不知道怎么做了 回复 8楼安心海叶的帖子
参考代码,C1DataGrid可以在CommittingEdit事件或者BeginningEdit事件中,通过参数e.EditingElement 获取当前正在编辑的单元格的真实控件:
dgSVC.CommittingEdit += (sender, e) =>
{
if (e.Column.Header.ToString().Equals("参数"))
{
C1ComboBox _currCMB = e.EditingElement as C1ComboBox;
// 行为e.RowIndex;列要对应你要级联的那一列索引
m_BindingSource.ExtendProperties = m_NewData;
dgSVC.Refresh(true, true, true, false, false);
}
}; 回复 9楼KNight的帖子
非常感谢,已经实现操作DataGrid的全部功能,拜谢~
页:
[1]
2