有些时候,我们希望可以修改绑定某列的所有控件都变成禁止编辑的状态,或者根据其他参数自动修改控件的可编辑状态。那么我们该如何引用这些列所绑定的所有控件清单呢?(一个字段可以绑定多个控件)
我们可以通过BaseGrid.TableBindingSource.BindingControls这个属性访问某个列的所有绑定控件的集合。这个属性是一个字典,Key是列名称,Value是一个List(Of IBindingControl)类型,IBindingControl控件集合。
Vb.Net |
Dim tbl As SmGrid=Proj.CurrentSmGrid '先判断指定字段是否有绑定控件 If tbl.TableBindingSource.BindingControls.ContainsKey("考核形式") Then '先根据情况设置列的可编辑状态 If tbl.CurrentRowData("是否考核")=True Then tbl.Cols("考核形式").AllowEditing=True Else tbl.Cols("考核形式").AllowEditing=False End If '遍历列对应的所有绑定控件集合 For Each ctrl As IBindingControl In tbl.TableBindingSource.BindingControls("考核形式") '重新设置控件的ReadOnly属性,设置此属性时,控件会重新根据列、行、表的相关可编辑属性重新初始化控件的可编辑状态 ctrl.ReadOnly=BooleanEnum.Default Next End If |
C# |
SmGrid tbl = Proj.CurrentSmGrid; // 先判断指定字段是否有绑定控件 if (tbl.TableBindingSource.BindingControls.ContainsKey("考核形式")) { // 先根据情况设置列的可编辑状态 if (tbl.CurrentRowData["是否考核"].CType<bool>()) tbl.Cols["考核形式"].AllowEditing = true; else tbl.Cols["考核形式"].AllowEditing = false; // 遍历列对应的所有绑定控件集合 foreach (IBindingControl ctrl in tbl.TableBindingSource.BindingControls["考核形式"]) { // 重新设置控件的ReadOnly属性,设置此属性时,控件会重新根据列、行、表的相关可编辑属性重新初始化控件的可编辑状态 ctrl.ReadOnly = BooleanEnum.Default; } } |