在AStar模块中加入额外的搜索条件
在动态表单中可以简单勾选主表的字段作为搜索条件,但是如果想按明细表的字段搜索就需要自己写代码实现了。
- 第一步,加入搜索条件
在你的模块中,继承onSearchByCompleted,比如加入员工编号的搜索
protected override void onSearchByCompleted(RepositoryItemRadioGroup repositoryItemSearchBy){addSearchBy("staffId", "员工编号", new RepositoryItemTextEdit());}
编译后运行,则可以看到员工编号的搜索选项
- 实现搜索逻辑
protected override void OnSearchBySql(ref string sql, Dictionary<string, object> param, bool isBill, string detailFormId = null)
{if (!isBill) //来自点击左侧单据的搜索{//要去掉staffId的搜索条件,因为它涉及到明细表if (param.ContainsKey("staffId")){param.Remove("staffId");}sql = sql.Replace("\"staffId\" >= @staffId AND ", "");return;}if (this.getSearchBy() == "staffId") //来自工具栏搜索条件的搜索,则构造通过明细表搜索单据的sql{sql= $@"select h.bill_no from hr_ot_bill_d dinner join t_hr_emp_private s on orgid={Session.Orgid} and staff_id=@staffId and s.id=d.emp_idinner join hr_ot_bill h on h.id=d.pid and h.bill_date between @start and @endorder by h.bill_no";param["start"] = dt_start;param["end"] = dt_end;}else{...}}