1. 功能

    该组件用于对数据进行模糊查询。
    目前支持两种类型:静态数据和动态数据,静态数据在加载组件是从后台获取数据,动态数据则在每次数据变化时都会去后台取数据。
    对于静态数据,支持通过全拼及拼音首字母的方式进行查询。

  2. 参数

    参数名 参数类型 是否必须 默认值 描述
    name java.lang.String (框架自动生成组件标记) 元素 id 和 name 属性的值
    page java.lang.String 从制定 page 获取查询数据
    listener java.lang.String page 对应的监听方法
    params java.lang.String 获取查询数据时传入的参数
    afterAction java.lang.String 在搜索完成后调用的方法
    clickAction java.lang.String 搜索组件被点击时触发的事件,当默认方法不满足需求时可重写该方法
    keyDownAction java.lang.String 搜索组件在 onkeydown 时触发的事件,当默认方法不满足需求时可重写该方法
    keyUpAction java.lang.String 搜索组件在 onkeyup 时触发的事件,当默认方法不满足需求时可重写该方法
    optionClickAction java.lang.String 当搜索组件下拉框在 onclick 事件时触发的事件,当默认方法不满足需求时可重写该方法
    searchData java.lang.String 可通过设置该参数来设置搜索的数据集
    defaultText java.lang.String 搜索组件默认显示的数据
    dynamic java.lang.String 标记组件是否是动态数据,默认为 false
    searchCode java.lang.String 被搜索的字段,对应 searchData 中 IData 的 key
    valueCode java.lang.String 隐藏字段,用于记录被搜索字段对应的数据
    searchPosition java.lang.String 搜索位置,默认在输入第一个参数时开始搜索
    width java.lang.String 搜索组件下拉框的宽度,默认为
    maxOption java.lang.String 设置搜索组件下拉框对应的最大行数,后台可根据该参数进行分页查询
    optionClass java.lang.String 设置下拉框的样式
    enterAction java.lang.String 在输入框中输入回车时调用的方法,传入值为方法名;入参为输入框对象,事件对象
    optionEnterAction java.lang.String 在下拉选项中输入回车时调用的方法,传入值为方法名;入参为输入框对象,事件对象
    component java.lang.String 当 search 组件嵌入到其他组件 A 时,可不设置 page 和 listener,将 component 设置为 A 组件的 id,并在 A 中返回组件的渲染信息时,通过 setAjax 设置 search 的返回值即可
    clazz java.lang.String 在配置 httpHandler 的情况下使用
    method java.lang.String 在配置 httpHandler 的情况下使用
  3. 调用 API

    方法 $.Search.get(name).setSearchData(searchData)
    说明 通过 js 动态设置要传递到后台的参数内容
    参数 searchData 态设置传递数据,需为 $.DatasetList 类型
    方法 $.Search.get(name).setParams(params)
    说明 通过 js 动态设置要传递到后台的参数内容
    参数 params 获取搜索数据时传递到后台的参数,需为 url 格式,如:a=b&c=d
  4. 后台方法定义规则

    1. 对于动态搜索,需根据传入的searchCode对应的内容,查询相关的内容;

    2. 对于静态搜索,在页面加载时会初始化搜索数据,在静态搜索对应的后台方法中需调用
      BaseUtil.buildSearchData(getContext(), das, searchCode):可接受 IDataset 类型的数据,需将该方法返回值传递给 getContext().setAjax();

      buildSearchData(IDataBus search,String keyCode):可接受IDataBus类型的数据,需将该方法返回值传递给getContext().setAjax();

  5. 示例

    1. HTML 代码

      <input jwcid="@Search"
      	name="search01"
      	page="Base.Main"
      	defaultText="动态搜索建议"
      	dynamic="true"
      	listener="loadMenu"
      	searchCode="MENU_NAME"
      	valueCode="MENU_NAME"
      	width="155"
      />
      <input jwcid="@Search"
      	name="search02"
      	page="Base.Main"
      	defaultText="静态搜索建议"
      	listener="loadMenu"
      	searchCode="MENU_NAME"
      	valueCode="MENU_NAME"
      	width="155"
      />
      <input jwcid="@Search"
      	name="search03"
      	defaultText="搜索建议"
      	searchCode="MENU_NAME"
      	valueCode="MENU_NAME"
      	width="155"
      />
      <!--需要配合httpHandler使用-->
      <input jwcid="@Search"     
      	name="search12" 
      	defaultText="动态搜索建议" 
      	dynamic="true"
      	clazz="com.ailk.demo.view.TestExport"  
      	method="loadMenu" 
      	searchCode="MENU_NAME" 
      	valueCode="MENU_NAME" 
      	width="205"/>
      <input jwcid="@Search" 
      	name="search01"  
      	page="CustDemo" 
      	defaultText="动态搜索建议" 
      	dynamic="true"
      	listener="loadMenu" 
      	searchCode="MENU_NAME" 
      	valueCode="MENU_NAME" 
      	width="155" 
      	enterAction="enterAction"/>
      
    2. Javascript 代码

      $.Search.get("search03").setSearchData(new $.DatasetList("[{'MENU_NAME':'111'},{'MENU_NAME':'22'}]"));
      $.Search.get("search01").setParams("key1=value1&key2=value2&key3=value3");
      
    3. Java 代码

      public void loadMenu(IRequestCycle cycle) throws Exception{
      	IDataset menus = new DatasetList();
      	buildUrlByDataSet(menus);
      	getContext().setAjax(BaseUtil.buildSearchData(getContext(), menus, "name"));
      }