下拉控件的获取,显示

  • 概述

    • 获取某个文本的下拉控件对象,显示。
  • 示例

    页面中XML配置的是Field="test"的一个下拉框列的配置。
    var dropobj=GetWebDropdownControl("test");获取下拉框对象
     ShowDropdownBox($("test"));显示test对应的下拉框
    一般下拉控件和这个文本框的关系是:
    var dropdown = document.getElementById("test").dropdown;
    //获取(相当于新建)下拉控件对象
    GetWebDropdownControl("test");
    //删除input对象已经绑定的下拉控件对象 
    //id页面上面的文本框的id   
    //最后在下拉控件集合中添加一个id+"_old"的对象指到原来这个下拉控件
    DelBindDropDown(id);
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

下拉控件的属性和方法

  • 概述

    • 下拉控件的属性和方法。
  • 示例

    页面中XML配置的是Field="test"的一个下拉框列的配置。下面的value是下拉项的值 text是下拉项的显示文本  
    var dropdown = GetWebDropdownControl("test");
    this=dropdown;
    this.bindObj 等于 $("test");
    this.Id 等于 $("test").id;
    this.items //当前生成的数据项集合
    this.selectedItems //选中的item集合
    //方法
    this.show()//显示下拉框架
    this.hide() //隐藏下拉框架
    this.getItemByValue(value)//(value)根据值获取item对象  
    this.getItemByText(text)根据文本显示获取item对象
    this.getSelectedItems(getDepth)根据getDepth(下拉树中使用和上面链接中FilterDepth一样)获取选中item对象集合
    this.setSelected(values)// 设置选中      values 下拉项的值的集合 多个以分号隔开
    //设置项选中或者不选中
    this.setItemSelected(items,bool)//bool 为空或者true时 设置选中 false是为不选中   items数据项集合
    this.setItemUnSelected(items)//设置不选中
    this.getTable()  //获取下拉控件的显示数据的 HTML表格对象
    this.getTreeDiv()//获取下拉控件的装载下拉树的DIV对象
    this.getValueIndex()//获取文本框中值在下拉控件中的排序 空则返回0
    this.addItem(value,text)//添加项
    this.addNode(value,text)//添加节点
    this.addOption(value,text)//添加项   只适用于下拉框
    this.clearSelected(isHide)//清空选中项 isHide是隐藏(下拉框呈现)
    this.clearOptions() //清空所有下拉项
    this.setSelectedFirst() //选中第一项
    this.Init()//初始化下拉控件对象
    
    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
  • 相关链接

    FilterDepth


下拉控件事件绑定

  • 概述

    • 用JS和配置的下拉控件的事件绑定
  • 示例

    Bindingpulldownpractice

    举例:

    <Column Field="ItemsId" ColSpan="1" RowSpan="1" CaptionText="项目名称" ParentTable="Items" FieldType="varchar" Enabled="true" DictionaryMode="1" IsDropDown="false" DropDownMode="Staticlist" ValueType="2">
                                <Events>
                                     <Event Name="afterChange" Script="TypeChanged()">
                                     </Event>
                                </Events>
                       </Column>
    <Scripts>
                       <Script>
                           <![CDATA[
                           //JS绑定事件
                           function addfun()
                           {
                                var dropdown = GetWebDropdownControl("ItemsId");
                                dropdown.ClientEvent["afterChange"] = "TypeChanged()";     
                           }
             function TypeChanged()
                  {
                       var tabBy=[];
                       tabBy.push(type);
    refreshDropDown("Search_ProjectModuleId",tabBy);refreshDropDown("ProjectModuleId",tabBy);
                  }
             ]]>
                       </Script>
                  </Scripts>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24

下拉控件下拉项(WebDropdownItem)属性方法

  • 概述

    • 下拉控件下拉项(WebDropdownItem)属性方法
  • 示例

    ///下拉数据项 ----------------------------------------------------------------------
    页面中XML配置的是Field="test"的一个下拉框列的配置。下面的value是下拉项的值 text是下拉项的显示文本  
    var dropdown = GetWebDropdownControl("test");
    dropdown.items//下拉控件的item的集合
    var item = new WebDropdownItem(value,text);
    var item=dropdown.items["I_"+value]//下拉控件中获取值为value的项
    //增加单元格数据
    item.addCell(name,value)
    //更新html
    item.updateHTML(isRender)
    //设置当前项是否显示
    item.setRowShow(bool)
    //设定选中(不触发事件)
    item.setSelected(bool,bToInput)
    //删除数据项
    item.remove()
    //取数据项中指定列的值
    item.getValueByName(fieldName)
    //取数据项中内部主键值(keyValue)
    item.getKeyValue()
    //取数据项中内部文本值(keyText)
    item.getKeyText()=item.getTextValue()
    //取得项显示文本值
    item.getItemDisplayText()
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24

下拉控件的下拉树节点(WebDropdownTreeNode)

  • 概述

    • 下拉控件的下拉树节点(WebDropdownTreeNode)的属性方法
  • 示例

    ///下拉树节点---------------------------------------------------
    页面中XML配置的是Field="test"的一个下拉框列的配置。下面的value是下拉项的值 text是下拉项的显示文本  
    var dropdown = GetWebDropdownControl("test");
    var nodeslist=dropdown.nodes;//下拉节点集合
    var node=WebDropdownTreeNode(value,text)//定义新的下拉树节点 
    //增加子节点 childNodes=new Array();
        node.addNode(childNode)
     //初始化项
        node.init(item)
    //取我的根节点
        node.getMyRootNode()
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

关于下拉控件的刷新初始化

  • 概述

    • JS手动的加载初始化下拉框对象(一般是需要页面进入后手动的点击下拉控件对应的那个文本框是才初始化的)和刷新数据。
  • 示例

    • 页面中XML配置的是Field="test"的一个下拉框列的配置

      //初始化下拉框对象及数据(同步方式);

      InitWebDropdownAndLoadContent("test");

      //刷新下拉框事件,并依附上指定ID集合的数据

      //id要刷新的下拉框ID

      //takeBy要附带的值的ID集合,当找不到此ID的控件时,将ID值当成常量传递

      refreshDropDown("test",takeBy);

      调用:

      <Column Field="ProjectModuleId" ColSpan="1" RowSpan="1" CaptionText="模块" ParentTable="ProjectModule" FieldType="varchar" Enabled="true" DictionaryMode="1" IsDropDown="false" DropDownMode="dropdowntree" ValueType="1">
                                  <Sql Type="SqlServer">
                                       <![CDATA[          
                             select ProjectModuleId as id,PModuleName as text,ParentModuleId as pid from ProjectModule 
                             where (IsDeleted is null or IsDeleted ='0') 
                             and ItemId='{@Request['__ddParam_0']}'
                             order by text 
                           ]]>
                                  </Sql>
                             </Column>
      JS调用:
      <Scripts>
                         <Script>
                             <![CDATA[
                    //某处调用下面方法重新加载ProjectModuleId的下拉或者下拉树的数据源
                    function TypeChanged()
                    {
                         var tabBy=[];
                         var type=”sdfsd”;
                         tabBy.push(type);
                         refreshDropDown("ProjectModuleId",tabBy); 
                    }
               ]]>
                         </Script>
                    </Scripts>
      添加参数:tabBy.push(type); 这边是一个一个添加参数  第一个对应数据源中的参数为'{@Request['__ddParam_0']}'以次类推__ddParam_1、__ddParam_2...最后调用  refreshDropDown("ProjectModuleId",tabBy); 调用后是从后台从新取SQL语句获得数据源加载数据。
      
      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

      2010-11-18修改

      这边多出一种达到同样效果的方法,区别在于数据源种参数名称可以自己给

      <Column Field="ProjectModuleId" ColSpan="1" RowSpan="1" CaptionText="模块" ParentTable="ProjectModule" FieldType="varchar" Enabled="true" DictionaryMode="1" IsDropDown="false" DropDownMode="dropdowntree" ValueType="1">
           <Sql Type="SqlServer">
               <![CDATA[select ProjectModuleId as id,PModuleName as text,ParentModuleId as pid from ProjectModule 
                             where (IsDeleted is null or IsDeleted ='0') 
                             and ItemId='{@Request['Req_partid']}'     order by text 
                           ]]>
           </Sql>
      </Column>
      JS调用:
      <Scripts>
           <Script>
               <![CDATA[
                    //某处调用下面方法重新加载ProjectModuleId的下拉或者下拉树的数据源
                    function TypeChanged()
                    {
                         var tabBy={};
                         tabBy["Req_partid"]="sdfsdfsdf";
                         refreshDropDown("ProjectModuleId",tabBy); 
                    }
               ]]>
           </Script>
      </Scripts>
      添加参数:tabBy["Req_partid"]="sdfsdfsdf"; 这边是一个一个添加参数  对应数据源中的参数为   '{@Request['Req_partid']}'    多个的话参数名称(中括号中的)修改下就可以 一一对应在数据源种的同样的Request 最后调用  refreshDropDown("ProjectModuleId",tabBy); 调用后是从后台从新取SQL语句获得数据源加载数据。
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23

JS重新定义获取下拉控件

  • 概述

    • 已经有绑定好的下拉控件,要通过JS去改变它的显示(比如下拉框改成下拉树等)。

      原理是(配置的XML的那些属性都基本会赋值到页面对应的文本框的属性)通过改变文本框的属性值,然后重新初始化(刷新)下拉控件。(包括已经初始化(已经显示的那些))。

  • 示例

    <Column Field="CRM_WL_WareHouseId" TableName="CRM_WL_MaterielOut" IsVirtual="true" CaptionText="出库仓库" FieldType="VarChar" Enabled="True" FilterType="Equal" InputType="dropdown" DropDownMode="DropDownTree" IsDropDown="true" DropDownType="自定义" IsSystem="True" Width="120px" >
               <Sql Type="SqlServer">
                    <![CDATA[
              select '123' id,'name' text,'' pid  
               union all
               select '1233' id,'1dddw' text,'' pid  
            ]]>
               </Sql>
         <Events>
             <Event Name="afterChange" Script="TypeChanged()">
             </Event>
         </Events>
      </Column>
    <Scripts>
                    <Script>
                         <![CDATA[
                         window.attachEvent("onload",
                                function(){//debugger
      //ShowDropdownBox("Search_CRM_WL_WareHouseId");
                                });
                                function __OnCollectSearch()
                                {
                                     //清除已经绑定的下拉控件
    DelBindDropDown("Search_CRM_WL_WareHouseId");
                                     //重新生成
    $("Search_CRM_WL_WareHouseId").renderMode="dropdown";
                                     //重新初始化下拉控件
    GetWebDropdownControl("Search_CRM_WL_WareHouseId");                                                 //ShowDropdownBox("Search_CRM_WL_WareHouseId");
                                     return false;
                                }
                         ]]>
                    </Script>
           </Scripts>
    页面调用方法__OnCollectSearch时重新初始化Search_CRM_WL_WareHouseId对应的下拉对象。以上是吧下拉树显示改成下拉框显示。DelBindDropDown这个方法调用在下拉控件已经初始化,显示出来了。下拉控件  里面的对应属性的 可以通过JS去修改 方法为$("Search_CRM_WL_WareHouseId")点属性=。。。
    然后调用类似上面的__OnCollectSearch()这个方法就可以得到后面。要重置事件的话 请看下拉控件事件绑定
    
    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
  • 相关链接

    下拉控件的获取,显示


下拉框对象扩展属性

  • 概述

    • 一些扩展属性。
  • 示例

    相关扩展属性

    <?xml version="1.0" encoding="utf-8" ?>
    <Entity>
      <FormList>
        <Form>
        </Form>
      </FormList>
      <QueryList>
        <Query>
          <!--下拉扩展属性-->
          <Column Field="roleName" TableName="SysUser" CaptionText="用户角色" FieldType="varchar" Enabled="True" FilterType="Like" Width="100px"
                  InputType="DropDown"   DropDownMode="Data"
                  InnerValue="Id" DisplayValue="Text"
                >
            <Events>
              <!--begin 扩展属性-->
                <!--isLazyLoad:懒人加载模式,加载大数据量有用,默认为false-->
                <Event Name="isLazyLoad" Script="true"></Event>
                <!--isShowTreeCheckBox:是否有复选框(isMultiSelect为true时才有效),默认为false-->
                <Event Name="isShowTreeCheckBox" Script="true"></Event>
                <!--isMultiSelect:是否可以多选,默认为false-->
                <Event Name="isMultiSelect" Script="true"></Event>
                <!--isSelectParent:勾中父级时是否有效,默认为true-->
                <Event Name="isSelectParent" Script="true"></Event>
                <!--isSelectParent:勾选父级时同时勾选上对应子级,默认为true-->
                <Event Name="isSelectChilds" Script="true"></Event>
                <!--isLookUpAndInput:是否启用模糊查询(支持下拉树),默认为false-->
                <Event Name="isLookUpAndInput" Script="true"></Event>
                <!--isInSelectArea:模糊查询时是滞适中第一项目(支持下拉树),默认为false-->
                <Event Name="isInSelectArea" Script="true"></Event>
                <!--isReadOnly:是否为只读,默认为false-->
                <Event Name="isReadOnly" Script="true"></Event>
                <!--isOnlyExpandParent:是否只展开非叶子结点,默认为false-->
                <Event Name="isOnlyExpandParent" Script="true"></Event>
                <!--expandLevel:展开级别,默认为1-->
                <Event Name="expandLevel" Script="5"></Event>
                <!--isOnlyShowMatchOnly:下拉树模糊查询时是否只显示匹配的项,默认为false-->
                <Event Name="isOnlyShowMatchOnly" Script="true"></Event>
                <!--isLookUpAtServer:是否通过后台(模糊查询) isLookUpAndInput为true时才有效,默认为false
                    通过pageSize属性设置每次模糊匹配的最大行数
                -->
                <Event Name="isLookUpAtServer" Script="true"></Event>
                <!--isLookUpByCustomer:是否通过后台数据源自定义过滤(通过{@Request['dp_keyWord']} 取得查询关键字)
                     通过{@Request['dp_pageSize']} 取得最大返回数据量)
                     通过{@Request['dp_isLookUpByCustomer']} 取得是否需要自定义过滤
                -->
                <Event Name="isLookUpByCustomer" Script="true"></Event>
              <!--以下为显示多列时使用-->
              <!--dataTextField:文本框显示字段 ,默认为''-->
              <Event Name="dataTextField" Script="显示字段"></Event>
              <!--fields:总的列集合 ,默认为''-->
                <Event Name="fields" Script="Id,text,pid"></Event>
                <!--showColumns:显示的列集合 ,默认为''-->
                <Event Name="showColumns" Script="Id,text,pid"></Event>
                <!--showCaptions:显示的列集合的描述 ,默认为列名-->
                <Event Name="showCaptions" Script="Id名称,text名称,pid名称"></Event>
                <!--defaultColumnWidth:显示的列的宽度 ,默认为100px-->
                <Event Name="defaultColumnWidth" Script="50"></Event>
                <!--hasEmpty:是否异步加载,默认为:true'-->
                <Event Name="isAsyn" Script="false"></Event>
                <!--hasEmpty:是否有清空按钮,默认为:true'-->
                <Event Name="hasEmpty" Script="false"></Event>
                <!--pageSize:分页大小,默认为:50'-->
                <Event Name="pageSize" Script="100"></Event>
                  <!--ParentControls:控制(级联过滤)当前下拉框对象的那些下拉框对象的Field值(大小写必须匹配)加上前后括号 逗号隔开多个-->
                  <Event Name="ParentControls" Script="(CreatedBy),(modifyby)"/>
                  <!--ChildrenControls:当前下拉框对象所控制(级联过滤)的那些下拉框对象的Field值(大小写必须匹配)加上前后括号 逗号隔开多个 -->
                  <Event Name="ChildrenControls" Script="(sysuserid)" />
                  <!--FilterByDataStr:默认为false
                       是否为数据源自定义过滤(指自己写sql 用request对象获取ParentControls里面的值 '{@Request['CreatedBy']}')
                       不为true是则是   数据源中得到的datatable进行过滤(where CreatedBy='qe')过滤时当CreatedBy为空值的时候跳过改过滤               
                  -->
                  <Event Name="FilterByDataStr" Script="true"/>
              <!--end 扩展属性-->
            </Events>
            <Sql Type="Oracle">
              <![CDATA[
                             select '' Id,'' text,'' PId,'' ElseKeyField,"" otherField from SysUser
                             ]]>
            </Sql>
            <Sql Type="SqlServer">
              <![CDATA[
                             select '' Id,'' text,'' PId,'' ElseKeyField,"" otherField from SysUser
                             ]]>
            </Sql>
          </Column>
        </Query>
      </QueryList>
    </Entity>
    
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88

例-联动加载数据(配置)

  • 概述

    • 多个下拉框之间可以联动的过滤下拉框的数据。通过在配置XML的时候加上Event。

      目前只支持在form页面和查询栏中 网格里面的尚不支持。

  • 参数

    FilterByDataStr,ChildrenControls,ParentControls

  • 示例

    参数说明: 表单和网格查询栏中的配置效果一样。

    <Column  …>
    <Events>
    <!--ParentControls:控制(级联过滤)当前下拉框对象的那些下拉框对象的Field值(大小写必须匹配)加上前后括号逗号隔开多个-->
                  <Event Name="ParentControls" Script="(CreatedBy),(modifyby)"/>
                  <!--ChildrenControls:当前下拉框对象所控制(级联过滤)的那些下拉框对象的Field值(大小写必须匹配)加上前后括号 逗号隔开多个 -->
                  <Event Name="ChildrenControls" Script="(sysuserid)" />
                  <!--FilterByDataStr:默认为false
                       是否为数据源自定义过滤(指自己写sql 用request对象获取ParentControls里面的值 '{@Request['CreatedBy']}')
                       不为true是则是   数据源中得到的datatable进行过滤(where CreatedBy='qe')过滤时当CreatedBy为空值的时候跳过改过滤               
                  -->
                  <Event Name="FilterByDataStr" Script="true"/>
    </Events>
    </Column>
    <Event Name="FilterByDataStr" Script="true"/>这个的值是以受控控件的配置为准。
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    调用方式一: FilterByDataStr=false的时候,FilterByDataStr这个没有写或者是值不为true的时候。

    <Query Entity="" UniqueNo="0" AdvancedUniqueNo="" ColCount="2" AutoWidth="false" DefaultHidden="false" HasSearchButton="true" HasAdvancedSearchButton="true" ButtonText="查询" Mode="tab">
             <Column Field="CreatedBy" TableName="ExpBulletin" CaptionText="创建者"
                           FieldType="VarChar" Enabled="True"  
                           FilterType="Equal" DropDownMode="Data" InnerValue="Value"
            DisplayValue="Caption" IsLookUpAndInput="true" InputType="DropDown" Width="150px" >
                  <Sql Type="SqlServer">
                       <![CDATA[
                           select SysUserId as Value,FullName as Caption from SysUser
                           ]]>
                  </Sql>
                  <Sql Type="Oracle">
                       <![CDATA[
                           select SysUserId Value,FullName Caption from SysUser
                           ]]>
                  </Sql>
                  <!--事件-->
                  <Events>
                       <Event Name="ChildrenControls" Script="(sysuserid)" />
                           <Event Name="onkeypress" Script="keypress()" />
                       <Event Name="afterChange" Script="" />
                       <Event Name="isMultiSelect" Script="true"></Event>
                  </Events>
             </Column>
             <Column Field="modifyby" TableName="ExpBulletin" CaptionText="修改者"
                           FieldType="VarChar" Enabled="True"
                           FilterType="Equal" DropDownMode="Data" InnerValue="Value"
            DisplayValue="Caption" IsLookUpAndInput="true" InputType="DropDown" Width="150px" >
                  <Sql Type="SqlServer">
                       <![CDATA[
                           select SysUserId as Value,FullName as Caption from SysUser
                           ]]>
                  </Sql>
                  <Sql Type="Oracle">
                       <![CDATA[
                           select SysUserId Value,FullName Caption from SysUser
                           ]]>
                  </Sql>
                  <!--事件-->
                  <Events>
                       <Event Name="ChildrenControls" Script="(sysuserid)" />
                  </Events>
             </Column>
             <Column Field="sysuserid" TableName="ExpBulletin" CaptionText="用户名称"
                           FieldType="VarChar" Enabled="True" IsVirtual="true"
                       FilterType="Equal" DropDownMode="Data" InnerValue="Value"
            DisplayValue="Caption" IsLookUpAndInput="true" InputType="DropDown" Width="150px" >
                  <Sql Type="SqlServer">
                       <![CDATA[
                           select SysUserId as Value,FullName as Caption,SysUserId as CreatedBy,SysUserId as modifyby from SysUser                       ]]>
                  </Sql>
                  <Sql Type="Oracle">
                       <![CDATA[
                           select SysUserId Value,FullName Caption,SysUserId CreatedBy,SysUserId modifyby from SysUser
                           ]]>
                  </Sql>
                  <!--事件-->
                  <Events>
                       <Event Name="ParentControls" Script="(CreatedBy),(modifyby)"/>
                       <!--<Event Name="FilterByDataStr" Script="true"/>-->
                  </Events>
             </Column>      
        </Query>
    请注意:这里的联动的2个下拉框之间必须满足(以上面的为例子)
    sysuserid这个下拉框是被联动改变下拉框值的控件。
    如果现在需要CreatedBy来控制sysuserid的话,sysuserid的ParentControls中必须有(CreatedBy),并且CreatedBy这个的ChildrenControls中必须有(sysuserid),这里的大小写必须匹配,同时成立。这样CreatedBy的每次的值改变(包括清空)都会触发sysuserid的下拉框内容的改变。
    这里sysuserid的数据源生成的datatable中必须有列CreatedBy(类似where CreatedBy in(值的集合)),不然返回空值。
    这里的sysuserid同时受到 CreatedBy和modifyby两个的控制。
    
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67

    调用方式二: FilterByDataStr的时候,=true

    <Query Entity="" UniqueNo="0" AdvancedUniqueNo="" ColCount="2" AutoWidth="false" DefaultHidden="false" HasSearchButton="true" HasAdvancedSearchButton="true" ButtonText="查询" Mode="tab">
             <Column Field="CreatedBy" TableName="ExpBulletin" CaptionText="创建者"
                           FieldType="VarChar" Enabled="True"  
                           FilterType="Equal" DropDownMode="Data" InnerValue="Value"
            DisplayValue="Caption" IsLookUpAndInput="true" InputType="DropDown" Width="150px" >
                  <Sql Type="SqlServer">
                       <![CDATA[
                            select SysUserId as Value,FullName as Caption from SysUser
                           ]]>
                  </Sql>
                  <Sql Type="Oracle">
                       <![CDATA[
                           select SysUserId Value,FullName Caption from SysUser
                           ]]>
                  </Sql>
                  <!--事件-->
                  <Events>
                       <Event Name="ChildrenControls" Script="(sysuserid)" />
                           <Event Name="onkeypress" Script="keypress()" />
                       <Event Name="afterChange" Script="" />
                       <Event Name="isMultiSelect" Script="true"></Event>
                  </Events>
             </Column>
             <Column Field="modifyby" TableName="ExpBulletin" CaptionText="修改者"
                           FieldType="VarChar" Enabled="True"
                           FilterType="Equal" DropDownMode="Data" InnerValue="Value"
            DisplayValue="Caption" IsLookUpAndInput="true" InputType="DropDown" Width="150px" >
                  <Sql Type="SqlServer">
                       <![CDATA[
                           select SysUserId as Value,FullName as Caption from SysUser
                           ]]>
                  </Sql>
                  <Sql Type="Oracle">
                       <![CDATA[
                           select SysUserId Value,FullName Caption from SysUser
                           ]]>
                  </Sql>
                  <!--事件-->
                  <Events>
                       <Event Name="ChildrenControls" Script="(sysuserid)" />
                  </Events>
             </Column>
             <Column Field="sysuserid" TableName="ExpBulletin" CaptionText="用户名称"
                           FieldType="VarChar" Enabled="True" IsVirtual="true"
                       FilterType="Equal" DropDownMode="Data" InnerValue="Value"
            DisplayValue="Caption" IsLookUpAndInput="true" InputType="DropDown" Width="150px" >
                  <Sql Type="SqlServer">
                       <![CDATA[
                           select SysUserId as Value,FullName as Caption,SysUserId as CreatedBy,SysUserId as modifyby from SysUser
                           where SysUserId='{@Request['dp_CreatedBy']}' and SysUserId='{@Request['dp_modifyby']}'
                           ]]>
                  </Sql>
                  <Sql Type="Oracle">
                       <![CDATA[
                           select SysUserId Value,FullName Caption,SysUserId CreatedBy,SysUserId modifyby from SysUser
     where SysUserId='{@Request['dp_CreatedBy']}' and SysUserId='{@Request['dp_modifyby']}'
                           ]]>
                  </Sql>
                  <!--事件-->
                  <Events>
                       <Event Name="ParentControls" Script="(CreatedBy),(modifyby)"/>
                       <Event Name="FilterByDataStr" Script="true"/>
                  </Events>
             </Column>      
        </Query>
    这里前面的判断条件和方法一种的是一样的,区别在于过滤的方式不同。
    在sysuserid下拉框的数据源中我们可以看到where SysUserId='{@Request['dp_CreatedBy']}' and SysUserId='{@Request['dp_modifyby']}'
    就是指重新的获取sysuserid的SQL语句取得最新的数据源,Request里面的和配置中的值前面多了“dp_”。这个和前面写的“下拉控件的刷新初始化”的效果是一样的。
    参数写在SQL中的是根据ParentControls里面的值(大小写必须匹配)。
    
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
  • 相关链接

    下拉框对象扩展属性


例-下拉和下拉树模糊查询

  • 概述

    • 下拉或者下拉树数据量比较大时(大于50)可以用模糊查询配置(isLookUpAndInput)

      下拉或者下拉树数据量比较大时(大于2000)可以用服务器端模糊查询配置(isLookUpAndInput和isLookUpAtServer)

  • 参数

    isLookUpAndInput isInSelectArea isOnlyShowMatchOnly isLookUpAtServer isLookUpByCustomer

  • 示例

    模糊查询配置:

    <Events>
               <!--isLookUpAndInput:是否启用模糊查询(支持下拉树),默认为false-->
                <Event Name="isLookUpAndInput" Script="true"></Event>
                <!--isInSelectArea:模糊查询时是滞适中第一项目(支持下拉树),默认为false-->
                <Event Name="isInSelectArea" Script="true"></Event>
                <!--isOnlyShowMatchOnly:下拉树模糊查询时是否只显示匹配的项,默认为false-->
                <Event Name="isOnlyShowMatchOnly" Script="true"></Event>
    </Events>
    
    1
    2
    3
    4
    5
    6
    7
    8

    服务器端模糊查询配置:

    <Events>
               <!--isLookUpAndInput:是否启用模糊查询(支持下拉树),默认为false-->
                <Event Name="isLookUpAndInput" Script="true"></Event>
                <!--isInSelectArea:模糊查询时是滞适中第一项目(支持下拉树),默认为false-->
                <Event Name="isInSelectArea" Script="true"></Event>
                <!--isOnlyShowMatchOnly:下拉树模糊查询时是否只显示匹配的项,默认为false-->
                <Event Name="isOnlyShowMatchOnly" Script="true"></Event>
                <!--isLookUpAtServer:是否通过后台(模糊查询) isLookUpAndInput为true时才有效,默认为false
                    通过pageSize属性设置每次模糊匹配的最大行数
                -->
                <Event Name="isLookUpAtServer" Script="true"></Event>
                <!--isLookUpByCustomer:是否通过后台数据源自定义过滤(通过{@Request['dp_keyWord']} 取得查询关键字)
                     通过{@Request['dp_pageSize']} 取得最大返回数据量)
                     通过{@Request['dp_isLookUpByCustomer']} 取得是否需要自定义过滤
                -->
                <Event Name="isLookUpByCustomer" Script="true"></Event>
     </Events>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    配置例子:

     <Column Field="Caption" TableName="WM_PT_Technical" CaptionText="功能简称"
                       FieldType="VarChar" Enabled="True" FilterType="Equal" DropDownMode="DropDownTree" InnerValue="Text"
                    DisplayValue="Text" IsLookUpAndInput="true" InputType="DropDown" Width="150px" >
                       <Sql Type="SqlServer">
                           <![CDATA[
                                 select WM_PT_TechnicalId Id,Caption Text,ParentId Pid from WM_PT_Technical  
                                   where isnull(IsDeleted,'0')='0'
                                   order by DisplayOrder 
                           ]]>
                       </Sql>
            <Events>
              <Event Name="isLookUpAndInput" Script="true"></Event>
              <Event Name="isInSelectArea" Script="true"></Event>
              <Event Name="isMultiSelect" Script="true"></Event>
              <Event Name="isShowTreeCheckBox" Script="true"></Event>
              <Event Name="isLookUpAtServer" Script="true"></Event>
            </Events>
          </Column>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18