Previous topicNext topic
Help > 开发指南 > 预备知识 >
如何引用高级筛选中的控件

如果我们希望对高级筛选中的筛选项做一些微调时,可以考虑通过下面的方式来引用。我们知道,日期类型和数值类型是既可以设置一个选择区间,也可以设置成2个筛选项分开设置条件的,如果想自己引用到控件的话,请保证每个字段只有一个筛选项,否则无法正常引用到。

Vb.Net
Dim tbl As SmGrid=Proj.CurrentSmGrid
Dim advance As AdvanceFilter=tbl.GridAdvanceFilter
If advance Is Nothing Then Return
'根据字段名称获取相应的高级筛选项
Dim item As AdvanceFilterItem=advance.FilterCols("FullName")
'通过Value()方法获得当前控件的输入值
Dim strName As String=item.Value()
Proj.MsgDebug.Add("Caption:{0}",item.Caption)
Proj.MsgDebug.Add("CaptionAlign:{0}",item.CaptionAlign.ToString())
Proj.MsgDebug.Add("CaptionWidth:{0}",item.CaptionWidth)
Proj.MsgDebug.Add("CaptionFont:{0}",item.CaptionFont.ToString())
'获取第一个比较操作符控件
Dim cmb As SmComboBox=item.ComparisonOperatorFirst
If cmb IsNot Nothing Then
    Proj.MsgDebug.Add("比较字符:{0}",cmb.Text)
End If
'遍历筛选项中的所有控件
For Each ctrl As Control In item.SubControls
    Proj.MsgDebug.Add("控件类型:{0},控件名称:{1},控件文本:{2}",ctrl.GetType().ToString(),ctrl.Name,ctrl.Text)
Next
'获得筛选项的筛选条件
Dim strFilter As String=item.GetFilterString()
Proj.MsgDebug.Add("筛选条件:{0}",strFilter)

'返回结果:Caption:姓名
'返回结果:CaptionAlign:MiddleRight
'返回结果:CaptionWidth:45
'返回结果:CaptionFont:[Font: Name=微软雅黑, Size=9, Units=3, Gdicharset=1, GdiVerticalFont=False]
'返回结果:比较字符:包含
'返回结果:控件类型:sanMuSoft.CS.WinForm.Controls.SmComboBox,控件名称:cmbFullName,控件文本:包含
'返回结果:控件类型:sanMuSoft.CS.WinForm.Controls.SmTextBox,控件名称:txtFullName,控件文本:万万
'返回结果:筛选条件:FullName Like '%万万%'

C#
SmGrid tbl = Proj.CurrentSmGrid;
AdvanceFilter advance = tbl.GridAdvanceFilter;
if (advance == null)
    return;
// 根据字段名称获取相应的高级筛选项
AdvanceFilterItem item = advance.FilterCols["FullName"];
// 通过Value()方法获得当前控件的输入值
string strName = item.Value().CType<string>("");
Proj.MsgDebug.Add("Caption:{0}", item.Caption);
Proj.MsgDebug.Add("CaptionAlign:{0}", item.CaptionAlign.ToString());
Proj.MsgDebug.Add("CaptionWidth:{0}", item.CaptionWidth);
Proj.MsgDebug.Add("CaptionFont:{0}", item.CaptionFont.ToString());
// 获取第一个比较操作符控件
SmComboBox cmb = item.ComparisonOperatorFirst;
if (cmb != null)
{
    Proj.MsgDebug.Add("比较字符:{0}", cmb.Text);
}
    
// 遍历筛选项中的所有控件
foreach (Control ctrl in item.SubControls)
{
    Proj.MsgDebug.Add("控件类型:{0},控件名称:{1},控件文本:{2}", ctrl.GetType().ToString(), ctrl.Name, ctrl.Text);
}
    
// 获得筛选项的筛选条件
string strFilter = item.GetFilterString();
Proj.MsgDebug.Add("筛选条件:{0}", strFilter);

// 返回结果:Caption:姓名
// 返回结果:CaptionAlign:MiddleRight
// 返回结果:CaptionWidth:45
// 返回结果:CaptionFont:[Font: Name=微软雅黑, Size=9, Units=3, Gdicharset=1, GdiVerticalFont=False]
// 返回结果:比较字符:包含
// 返回结果:控件类型:sanMuSoft.CS.WinForm.Controls.SmComboBox,控件名称:cmbFullName,控件文本:包含
// 返回结果:控件类型:sanMuSoft.CS.WinForm.Controls.SmTextBox,控件名称:txtFullName,控件文本:万万
// 返回结果:筛选条件:FullName Like '%万万%'