
【场景】打开sql报表不显示过滤界面直接显示数据
【方案一】设置下次以此方案自动打开,在sql 报表表单插件中实现接受自定义参数并设置到关键字
[二开案例.账表表单插件.直接SQL账表双击数据行打开新账表](https://vip.kingdee.com/article/251423606071644416?channel_level=%E9%87%91%E8%9D%B6%E4%BA%91%E7%A4%BE%E5%8C%BA%7C%E6%90%9C%E7%B4%A2%7C%E7%BB%BC%E5%90%88&productLineId=1&isKnowledge=2)
【方案二】利用过滤界面二开,接受自定义参数时自定提交过滤方案
(0) sql报表,sql关键字

(1) sql报表过滤界面,扩展或者复制一个,增加插件逻辑接受参数自定提交

(2) 采购订单界面,选中行双击时传入物料进行过滤

```csharp
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.CommonFilter.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.ReportFilter;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DynamicFormPlugIn.Report
{
public class KeyConst
{
public const string KeyWordPara = "CustomPara_KeyWord";
}
[Kingdee.BOS.Util.HotUpdate]
public class ReportFilterPlugIn : AbstractCommonFilterPlugIn
{
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
/*
* 利用父视图自定义参数,获取是否存在自定义值
*/
if (View == null || View.ParentFormView == null)
return;
object keyWordVal = View.ParentFormView.OpenParameter.GetCustomParameter(KeyConst.KeyWordPara, true);
JSONArray keyWordMap = keyWordVal as JSONArray;
if (keyWordMap == null)
return;
ISQLReportFilterModelService modelService = View.Model as ISQLReportFilterModelService;
if (modelService == null)
return;
((SQLFilterSchemeEntity)modelService.SchemeEntity).SQLFilterSetting = keyWordMap.ToString();
modelService.SQLFilterObject.Setting = ((SQLFilterSchemeEntity)modelService.SchemeEntity).SQLFilterSetting;
ICommonFilterView filterView = View as ICommonFilterView;
filterView.SubmitQuery(null);
}
}
[Kingdee.BOS.Util