# 查询界面动态按钮

参照 【自定义按钮】示例 或下面 【查询界面添加隐藏按钮】示例

# 动态增加查询配置(子查询、明细表查询)

An image 动态增加一些其他查询配置,这些字段在表里面不存在,或者字段在其他表,如子表查询

# 1.前端增加配置

onInit() {
    //增加查询参数配置
    this.searchFormOptions.push([
            {"title":"名称1","field":"字段1","type":"like"},//模糊查询
            {"title":"名称2","field":"字段2","type":"select",dataKey:"字典编号"},//下拉框
            {"title":"名称3","field":"字段3","type":"selectList",dataKey:"字典编号"}//下拉框多选
        ]);

    //也可以使用js的splice语法将查询配置放在表单任意位置,如:放在查询表单第1行,第2个配置后面
    // this.searchFormOptions[1].splice(2,0,...[{查询配置},{}])//注意有三个...
    //要是看不懂什么意思,搜js的splice语法

    //增加查询字段默认值
     this.searchFormFields.字段1=null;
     this.searchFormFields.字段2=null;
     this.searchFormFields.字段3=[];//注意下拉框多选,日期等多个值的这里默认应该是数组
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

更多查询类型,如:日期、下拉框多选、数字范围等,见表单示例
组件示例->表单组件 (opens new window)

# 2.后台自定义(子、明细表)查询

在[表Service.cs]类中重写查询方法
后台查询更多说明,http://v3.volcore.xyz/dev/后台基础代码扩展实现.html#查询 (opens new window)

重写表的查询方法实现
public override PageGridData<> GetPageData(PageDataOptions pageData)
{
    QueryRelativeList = (List<SearchParameters> parameters) =>
    {
        //设置查询条件
        QueryRelativeExpression = (IQueryable<> queryable) =>
        {
            string value1 = parameters.Where(x => x.Name == "字段1").Select(s => s.Value).FirstOrDefault();
            //EF版查询
            if (!string.IsNullOrEmpty(value1))
            {
                //自定义查询
                //queryable= queryable.Where(x => 条件);

                //明细表查询:关联其他表或者子表查询
                //var subQuery = repository.DbContext.Set<其他表>().Where(x => true);
                ////进行子查询
                //queryable = queryable.Any(c => subQuery.Any(x => x.字段 == c字段 && 接着写条件));
            }

            //sqlsugar后台查询
            if (!string.IsNullOrEmpty(value1))
            {
                //自定义查询
                //queryable= queryable.Where(x => 条件);

                //明细表查询:关联其他表或者子表查询
                //queryable = queryable.Any(c => SqlFunc.Subqueryable<其他表>().Any(x =>x.字段==c字段&&条件).Any());
            }

            //其他自定义字段操作同上
            //string value2 = parameters.Where(x => x.Name == "字段2").Select(s => s.Value).FirstOrDefault();
            return queryable;
        };
       // 后台查询更多说明:http://v3.volcore.xyz/dev/后台基础代码扩展实现.html#查询
    };
    return base.GetPageData(pageData);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39