FAQ > .Web应用 > .web应用案例

Q:.web中如何实现参数联动    

  • A:.web中可以通过设置一个参数的值后控制另一个参数的可选值范围,即参数联动功能。

    实现示例
    新增两个模型
    1.页面展示模型
    web配置的数据源模型,包含两个参数:联动关系参数与联动参数,其中联动参数的类型为“用户自定义”
    Function web_testdemo3(pz,future);
    Begin
    {
      说明:参数联动配置范例—获取指定期货品种指定合约代码当天的5分钟线行情数据
      参数:
        pz:字符串,期货品种
        future:用户自定义,期货合约
      返回:数组,指定日期货合约5分钟行情
    }
      endt:=today();
      begt:=IntToDate(spec(InfoArrayExt(753,"截止日",datetoint(endt-1))[0,"截止日"],"QI000001"));
      setsysparam(pn_cycle(),cy_5m());//设置为5分钟线
      t:= select ['StockID'],['StockName'],datetimetostr(['date']) as 'date',['close'],
            ['vol'],['amount']
        from Markettable datekey begt+18/24 to endt+18/24 of future end;
      return t;
    End;

    2.参数联动模型
    通过联动关系参数值来获取联动参数可选的枚举值,必须包含与联动关系参数别名一致的参数,返回结果包含以下两列:
    “name”:web中联动参数显示的可选项;
    “value”:“name”对应的实际参数值。
    Function web_linkageParam(pz);
    Begin
    {
      说明:联动参数-通过联动关系参数获取联动参数的枚举值。
      参数:
        pz:字符串,期货品种,别名需与联动关系参数一致
      返回:数组,包含“name”与“value”列的数组
    }
      endt:=today();
      futures:=GetFuturesID(pz,endt);
      data:=select StockName(thisrow) as "name",thisrow as "value" from futures end;
      return array(("name":"all","value":futures)) union data;
    End;


    web配置
    1.数据源模型选择:web_testdemo3;
    2.在市合约参数类型选择用户自定义;
    3.在市合约参数选择参数联动;
    4.参数联动设置:
      1).联动设置为:启用
      2).联动关系选择联动关系参数:期货品种;
      3).数值来源选择:模型;
      4).数值设定模型名为:web_linkageParam
    5.保存配置页面;


    6.设置期货品种参数,查看联动参数枚举值;
    注:本示例执行日期为:20240403,仅供参考,不同日期配置的范例显示结果不一致是正常的

    7.选择在市合约后点击查询查看页面配置结果。