Previous topicNext topic
Help > 开发指南 > 预备知识 >
如何引用表字段绑定的控件

有些时候,我们希望可以修改绑定某列的所有控件都变成禁止编辑的状态,或者根据其他参数自动修改控件的可编辑状态。那么我们该如何引用这些列所绑定的所有控件清单呢?(一个字段可以绑定多个控件)

我们可以通过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;
    }
}