在简单账表中,如何根据过滤条件框进行过滤
上图是过滤条件框,在简单账表中已经关联了。
请问在页面加载时如何根据这3个字段进行过滤,
写插件还是怎么???
在服务端插件取数时,将这3个字段的值拼到取数SQL中,作为过滤条件
以下为简单示例,如果获取快捷页签的过滤数据。示例代码,仅做演示,实际情况,需要斟酌修改。
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
base.BuilderReportSqlAndTempTable(filter, tableName);
string sSQL = string.Empty;
/*
* 拼接取数SQL,自己搞定
* */
//获取快捷页签的过滤字段数据
DynamicObject customFil = filter.FilterParameter.CustomFilter;
//拼成过滤条件
string sWhere = string.Empty;
sWhere = string.Format("Where FNumber = '{0}' AND FText = '{1}'", customFil["FNumber"], customFil["Ftext"]);
DBUtils.Execute(this.Context, sSQL);
}
复制代码
customFil可获取文本框的值,但是我要获取基础资料下的Fnumber怎么获取呢?
filter.FilterParameter.CustomFilter数据包里面包含基础资料字段的数据包,展开这个数据包,可以拿到编码
((DynamicObject)customFil["F_kd_Base"])["Number"]
复制代码
怎么获取过滤框的多选下列列表的值
// 拼接过滤条件 : filter
DynamicObject dyFilter = filter.FilterParameter.CustomFilter;
//日期取值
DateTime fldDateValue = Convert.ToDateTime(dyFilter["F_PAEZ_Date"]);
//多选下来列表取值,取出来效果如"3,5,6"使用逗号分割的
String color = Convert.ToString(dyFilter["F_PAEZ_MulCombo1"]);
//多选基础资料取值,以物料为例
DynamicObjectCollection dyCollection = dyFilter["F_PAEZ_MulBase1"] as DynamicObjectCollection;
foreach (DynamicObject dobj in dyCollection)
{
long supplierId = Convert.ToInt64(dobj[0]);
//物料
DynamicObject materiel = dobj["F_PAEZ_MulBase1"] as DynamicObject;
//物料编号
string materielNumber = materiel["Number"].ToString();
//物料名称
string materielName = materiel["Name"].ToString();
}
推荐阅读