例-网格页面页签相关事件

  • 概述

    • 网格页面页签相关事件
  • 示例

    _BeforCurrentTabCut() 当前显示网格的页签切换前事件(已过时)
    _BeforDeleteCurrentTab() 当前显示网格的页签删除前事件(已过时)
    都需返回true(页签操作继续)或false(页签操作中止)。
    
    1
    2
    3

例-网格编辑中下拉数据过多处理方案

  • 概述

    • 关于网格编辑的下拉框数据过多,造成卡机,数据丢失等现象的解决方案。
  • 示例

    • 以MES项目的 物料管理-制丝消耗管理-退料申请单业务作为例子:

      图片:

      GridEdit

      <GridList>    
      <Grid Name="MES_WL_RawMtlReturnD" UniqueNo="11923" HasRowHeader="true" AllowEdit="true" HasDetail="false"  AllowAddNew="true" NewRowLostFocusAction="AlwaysPrompt" OpenType="Grid" PageSize="50">
            <Column Field="MES_WL_RawMtlReturnDId" FieldType="VarChar" CaptionText="主键" Width="0" IsEdit="false" EditType="NoEdit"></Column>
            <Column Field="MES_JC_WIPId" FieldType="VarChar" CaptionText="牌号"   Width="150" IsEdit="true" EditType="Dropdown"  >
              <Map Mode="ParentTable">
                <ParentTable Name="MES_JC_WIP" PTValue="MES_JC_WIPId" PTText="F_Name"/>
              </Map>
              <Args>
                <Arg Name="isLookUpAndInput" Value="true"/>
              </Args>
            </Column>
            <Column Field="F_ThrowOrder" FieldType="VarChar" CaptionText="投料顺序"   Width="80" EditType="NoEdit"/>
            <Column Field="MES_JC_TobLeafId" FieldType="VarChar" CaptionText="原料名称"  Width="160"  EditType="Dropdown">
              <Map Mode="ParentTable">
                <ParentTable Name="MES_JC_TobLeaf" PTValue="MES_JC_TobLeafId" PTText="F_Name"/>
              </Map>
            </Column>
            <Column Field="F_Year" FieldType="VarChar" CaptionText="年别"    Width="100" EditType="NoEdit"/>
            <Column Field="MES_JC_TobLeafAreaId" FieldType="VarChar" CaptionText="产地"    Width="120"  EditType="Dropdown">
              <Map Mode="DataSource">
                <DataSource Type="Oracle">
                <![CDATA[
                 select MES_JC_TobLeafAreaId as value,F_Name as text from MES_JC_TobLeafArea where nvl(isdeleted,'0')='0'        
                ]]>
              </DataSource>
            </Map>
            </Column>
            <Column Field="UnitWeight" FieldType="Double" CaptionText="规格" EditType="NoEdit" Width="110"   />
            <Column Field="F_ProductDosages" FieldType="Double" CaptionText="件数" EditType="NoEdit" Width="100"  />
            <Column Field="F_weight" FieldType="Double" CaptionText="重量" EditType="NoEdit" Width="100" />
            <Column Field="MES_WL_RawMtlReturnId" FieldType="VarChar" CaptionText="主表主键" Width="0"  EditType="NoEdit"></Column>
            <DataSource Type="Oracle">
              <![CDATA[   
                      select MES_WL_RawMtlReturnDId,
                             MES_JC_WIPId,
                             F_ThrowOrder,
                             MES_JC_TobLeafId,
                             F_Year,
                             MES_JC_TobLeafAreaId,
                             UnitWeight,
                             F_ProductDosages,
                             F_weight,
                             MES_WL_RawMtlReturnId 
                             from MES_WL_RawMtlReturnD a
                      where (a.IsDeleted ='0' or a.IsDeleted is null) 
                      and a.MES_WL_RawMtlReturnId='{@Request['ReturnId']}' and '{@Request['Key']}' is  null
                         union all
                         select newid() MES_WL_RawMtlReturnDId,
                             mes_jc_wipId,
                             c.f_tobaccoorder,
                             b.mes_jc_tobleafid,
                      to_char(F_Year),
                         d.MES_JC_TobLeafAreaId,
                         b.f_unitweight,
                         b.f_productdosages,
                      b.f_actualweight,
                         '{@Request['ReturnId']}' MES_WL_RawMtlReturnId
                         from 
                            mes_wl_yardlocation f join 
                            mes_wl_tobleafrecord a  on f.mes_wl_tobleafrecordid=a.mes_wl_tobleafrecordID
                      left join mes_wl_tobleafrecorddetail b
                      on a.mes_wl_tobleafrecordid=b.tobleafrecordid
                      left join mes_jk_pdm_recipedetail c on b.mes_jk_pdm_recipedetailid=c.mes_jk_pdm_recipedetailid
                      left join mes_jc_tobleaf d on d.mes_jc_tobleafid=b.mes_jc_tobleafid
                      left join mes_jc_tobleafarea e on e.mes_jc_tobleafareaid=d.mes_jc_tobleafareaid
                      where mes_jc_wipId is not null and f.mes_wl_yardlocationid='{@Request['Key']}'  and '{@Request['Key']}' is not null
                 ]]>
            </DataSource>
          </Grid>
        </GridList>
      <ToolBarList>
      <ToolBar UniqueNo="11923">
            <SysButtons Info="系统按钮">
              <Button Target="Grid" RuleName="Append" Name="cmd新建" Text="新建" ToolTip="新建" Type="Normal" Image="WebToolBar/16_create.gif" DisplayMode="TextAndImage" OpenType="open" WinWidth="800px" WinHeight="700px" Script="__WebGridAppend()"></Button>
              <Button Target="Grid" RuleName="Delete" Name="cmd删除" Text="删除" ToolTip="删除" Type="Normal" Image="WebToolBar/16_Delete.gif" DisplayMode="TextAndImage" Script="__WebGridDelete('1')">
              </Button>
              <Button Target="Grid" RuleName="Modify" Name="cmd加载数据" Text="加载数据" ToolTip="加载数据" Type="Normal" Image="WebToolBar/Edit.gif" DisplayMode="TextAndImage" Script="test()" ></Button>
             </SysButtons>
            <UserButtons>
            </UserButtons>
            <Scripts>
              <Script>
                <![CDATA[
                 //加载数据
                  function test()
                  {
                    var ReturnID = parent.Request.id;
                    var R = parent.$("#MES_JK_PDM_RecipeDetailId").attr("keyValue");
                    var workId = parent.$("#MES_JC_WorkShopId").attr("keyValue");
                    var gridObj = wm.c.getGrid();
                    var rowsObj = gridObj.getRows();
                    var length = rowsObj.length;
                    if (workId == undefined || workId == '')
                    {
                      alert("车间不能为空");
                      return false;
                    }
                      if (workId == '291764')
                    {
                         var DWH = parent.$("#MES_WL_YardLocationId").attr("keyValue");
                      if (DWH == undefined || DWH == '')
                      {
                        alert("堆位号不能为空");
                        return false;
                      }
                      else
                      {
                             //往网格中添加变量Key
                             gridObj.addInput("Key",DWH);
                             __WebGridRefresh();
                         }
                      }             
                  }           
                      ]]>
              </Script>
            </Scripts>
      </ToolBar>
      </ToolBarList>
      
      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
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
    • 注意事项:

      这里最主要的区别是每一次的点击加载数据都是去刷新网格,数据从后台获取赋值 而按钮的方法已经变成如上面代码显示

      gridObj.addInput("Key",DWH)和 __WebGridRefresh()根据数据源的代码和这边的参数加入后得到想要的数据(请看datasource) 。前台JS往网格中添加数据无效。

      然后由于怕下拉数据过多 这边需要在网格配置中的数据量过多的对应COLUMN节点的EditType="editdropdownlist"(已过时,平台5.0专用)(点击网格对应列后异步加载数据),其他都一样。具体业务逻辑自己JS代码编写。


例-网格合并列

  • 概述

    • 形成网格一列中,多行(单元格值相同)合并的效果。
  • -示例

    <Grid Name="ExpInstitution" UniqueNo="0" HasRowHeader="true" AllowEdit="false" EditURL="Sys/View/XSLT/Form"  PageSize="50" OpenType="ShowModalDialog" WinWidth="800px" WinHeight="510px">
          <Column Field="FilesCode" FieldType="VarChar" CaptionText="文件编号" Width="100"  EditType="NoEdit" SortOrder="Desc">
          </Column>
          <Column Field="Title" FieldType="VarChar" CaptionText="文件主题" Width="200"  EditType="NoEdit" SortOrder="Desc">
          </Column>
          <Column Field="IsAllowed" FieldType="VarChar" CaptionText="是否审核" Width="80" EditType="NoEdit">
            <Map Mode="Dictionary"/>
          </Column>
          <Column Field="CreatedOn" FieldType="DateTime" CaptionText="发布时间" Width="120" EditType="NoEdit" SortOrder="Desc">
          </Column>
          <Column Field="CreatedBy" FieldType="VarChar" CaptionText="发布人"   Width="80" EditType="NoEdit" SortOrder="Asc">
            <Map Mode="ParentTable">
              <ParentTable Name="SysUser"/>
            </Map>
          </Column>
          <Column Field="StateCode" FieldType="VarChar"  CaptionText="状态" Width="0" EditType="NoEdit" SortOrder="Asc"">
            <Map Mode="ParentTable">
              <ParentTable Name="StateCode"/>
            </Map>
          </Column>
          <Events>
            <Event Name="OnCellDblClick">
            </Event>
          </Events>
          <ColumnMerges MergeRowHeader="false">
            <!--网格合并列配置-->
            <ColumnMerge Field="CreatedBy" />
          </ColumnMerges>
          <Scripts>
            <Script>
              <![CDATA[
              ]]>
            </Script>
          </Scripts>
        </Grid>
    
    
    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

    网格效果:

    GridMerge

    注意事项:

    节点ColumnMerges/ColumnMerge,MergeRowHeader用来控制是否合并行头 Field 指向到上面的列的列名称,所设定的列必段在输出列范围内。 用js实现如下:

    <Scripts>
            <Script>
              <![CDATA[
             $(function(){
                var grid=wm.c.getGrid();//获得网格对象
                grid.mergeRowHeader=false;//是否合并行头
                var MyMgs=new Array();
                MyMgs.push("CreatedBy");//加入需要合并的列名称
                MyMgs.push("Title");
                grid.mergeByName(MyMgs);//调用合并方法,参数是需要合并列的集合
            });        
              ]]></Script>
          </Scripts>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

例-网格动态列(存储过程)

  • 概述

    • 网格特殊配置,具体看例子。
  • 示例

    以MES项目的 物料管理-制丝产量报表-制丝车间班组投料月生产报表作为例子:

    <Grid Name="MES_WL_YYKeep" UniqueNo="110200"   HasChecked="false"  HasRowIndex="false"  HasDetail="false" AllowSort="false" AllowEdit="false"   >
          <Column Field="displayOrder" FieldType="VarChar"  EditType="NoEdit" SortOrder="Asc"  CaptionText="排序" IsVirtual="true"  Width="0"   >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
            </Style>
          </Column>
          <Column Field="T1" FieldType="VarChar" CaptionText="生产日期"  EditType="NoEdit" Width="100" IsVirtual="true"  >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="right"></align>
              </Data>
            </Style>
          </Column>
          <DataSource Type="Oracle" IsStore="true" >
            <![CDATA[                             
               P_WL_YYKeepCount {@Search['F_Date']},{@Search['F_Date2']},{@Search['MES_JC_WorkShopId']} 
                       ]]>
          </DataSource>
          <ColumnSets>
            <Sql Type="Oracle" IsDynamic="true"></Sql>
            <ColumnSet>
              <!--动态列说明
              RefField:引用的列模板(静态列有用)
              Group:对列分组
              Sort:对列过街排序(一般以DISPLAYORDER 升序)
              Value:生成的列名字段
              Text:显示的列名的字段
              TextFormat:对显示的列名格式化
              ValueFormat:对生成的列名格式化
              注:如果全是动态的,下面配置不用做太多修改(Type="Dynamic"的Column)
            -->
              <Column RefField="T1" Type="Dynamic" Group="caption1" Text="caption1" Value="asName" TextFormat="" ValueFormat=""  ></Column>
            </ColumnSet>
          </ColumnSets>
          <Scripts>
            <Script>
              <![CDATA[          
              ]]>
            </Script>
          </Scripts>
        </Grid>
    
    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

    网格效果:

    GridDynamicColumn-C

    就此列子而言网格需显示的只配置"T1"列 ,在存储过程中其他列的"RefField"字段均是"T1",xml配置中columnSet节点下的column节点中的引用字段"RefField"也是"T1" 。


例-网格复合列

  • 概述

    • 复合列配置
  • 示例

    静态复合列配置,以PDM项目 烟叶价值链-仓储醇化-烟叶普查管理 为例:

    配置信息:

    <Grid Name="PDM_WA_TobaccoSurveyDetail" UniqueNo="10900" AllowSort="false" HasChecked="false" HasDetail="false" AllowEdit="false"  WinWidth="600" WinHeight="500" EditURL="Sys/View/XSLT/Form">
          <Column Field="Position"  CaptionText="存放位置" FieldType="VarChar"  Width="150"  EditType="NoEdit" />
          <Column Field="ProducingArea"   CaptionText="产地" FieldType="VarChar"   Width="100"  EditType="NoEdit"></Column>
          <Column Field="Grade1"  CaptionText="烟叶等级" FieldType="VarChar" Width="100"  EditType="NoEdit" />
          <Column Field="Grade"  CaptionText="等级"  FieldType="VarChar" Width="100" EditType="NoEdit" />
          <Column Field="YearA"  CaptionText="年份" FieldType="VarChar"  Width="80" EditType="NoEdit" />
          <Column Field="Color"   CaptionText="颜色" FieldType="VarChar"  Width="100"  EditType="NoEdit" ></Column>
          <Column Field="BodyA"  CaptionText="身份"   FieldType="VarChar" Width="100"  EditType="NoEdit" />
          <Column Field="Oil"   CaptionText="油分" FieldType="VarChar"   Width="100"  EditType="NoEdit" ></Column>
          <Column Field="ColorIntensity"  CaptionText="色度"   FieldType="VarChar" Width="100" EditType="NoEdit"  />
          <Column Field="Water"  CaptionText="水分" FieldType="VarChar"  Width="80"  EditType="NoEdit" />
          <Column Field="InsectSituation"   CaptionText="虫情" FieldType="VarChar"  Width="100" EditType="NoEdit" ></Column>
          <Column Field="Mildewing"  CaptionText="霉变"   FieldType="VarChar" Width="100" EditType="NoEdit"  />
          <Column Field="Memo"  CaptionText="备注" FieldType="VarChar" Width="100"  EditType="NoEdit"  />
          <DataSource Type="Oracle">
            <![CDATA[
                  select Position,'' as Position1,ProducingArea,Grade,'' as Grade1,YearA,Color,'' as Wstate,
    BodyA,Oil,ColorIntensity,Water,InsectSituation,Mildewing,Memo
                   from PDM_WA_TobaccoSurveyDetail where (Isdeleted is null or Isdeleted='0') and PDM_WA_TobaccoSurveyId='{@Request['ParentId']}'
            ]]>
          </DataSource>
          <ColumnSets>
            <!--说明
                1.....
                2.每一个Column的RefField为空的是虚拟列(没有引用任何列),和数据无关
                3.每一个Column的RefField为非的是列是数据列,要与具体的数据列关联
                4.只有第一行的数据列可以设置成Width为0(不显示),其它的数据列无效
                5.所有的在ColumnSet引用的数据列的IsDisplay="false"无效
                6.纵向有且只能有一个列为数据列
                7.横向列合并用#cspan
                8.纵向列合并用#rspan
                9.所有的数据列列数应该与ColumnSet里的Column列数一致
            -->
            <ColumnSet>
              <Column RefField="" Value="Grade1">烟叶等级</Column>
              <Column RefField="">#cspan</Column>
              <Column RefField="">#cspan</Column>
              <Column RefField="Position" Value="Position">存放位置</Column>
              <Column RefField="" Value="">外观</Column>
              <Column RefField="">#cspan</Column>
              <Column RefField="">#cspan</Column>
              <Column RefField="">#cspan</Column>
              <Column RefField="Water" Value="Water">水分</Column>
              <Column RefField="InsectSituation" Value="InsectSituation">虫情</Column>
              <Column RefField="Mildewing" Value="Mildewing">霉变</Column>
              <Column RefField="Memo" Value="Memo">备注</Column>
            </ColumnSet>
            <ColumnSet>
              <Column RefField="ProducingArea" Value="ProducingArea">产地</Column>
              <Column RefField="Grade" Value="Grade">等级</Column>
              <Column RefField="YearA" Value="YearA">年份</Column>
              <Column RefField="">#rspan</Column>
              <Column RefField="Color" Value="Color">颜色</Column>
              <Column RefField="BodyA" Value="BodyA">身份</Column>
              <Column RefField="Oil" Value="Oil">油分</Column>
              <Column RefField="ColorIntensity" Value="ColorIntensity">色度</Column>
              <Column RefField="">#rspan</Column>
              <Column RefField="">#rspan</Column>
              <Column RefField="">#rspan</Column>
              <Column RefField="">#rspan</Column>
            </ColumnSet>
          </ColumnSets>
          <Scripts>
            <Script>
              <![CDATA[  
                            function LookInfo()
    
                                {
                                    var thisGrid=wm.c.getGrid();
                                     var rows = thisGrid.selectedRows;
                                     var TempEntity="PDM_WA_TobaccoSurvey";
                                     var TempUniqueNo="10900";
                                     var MappingId= Ajax.WebRequest("Sys/User_TechWebServer/GetMapping",{TempEntity:TempEntity,TempUniqueNo:TempUniqueNo});                   
                                     var KeyValue=rows[0].idd;               
                                     var Url  = "Sys/View/XSLT/Form?MappingId="+MappingId+"&id="+KeyValue+"&t="+Math.random();                                     openDialog(Url,window,"DialogWidth:650px;DialogHeight:500px;edge:raised;scroll:yes;help:no;status:no;border:no");      
                                }
                           ]]>
            </Script>
          </Scripts>
        </Grid>
    
    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

    网格效果:

    GridCompoundColumn

    动态复合列配置,以MES项目 物料管理-制丝消耗报表-各牌号烟叶耗用月报 为例: 配置信息:

    <Grid Name="MES_JC_TobLeaf" UniqueNo="110200" FreezedIndex="1" HasChecked="false"  HasRowIndex="false"  HasDetail="false" AllowSort="false" AllowEdit="false" >
          <Column Field="T1" FieldType="VarChar" EditType="NoEdit"   SortOrder="Asc" CaptionText="烟叶名称"  Width="100" IsVirtual="true"  >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="left"></align>
              </Data>
            </Style>
          </Column>
          <Column Field="displayOrder" FieldType="VarChar"  SortOrder="Asc" EditType="NoEdit" CaptionText="排序" IsVirtual="true"  Width="0"   >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="left"></align>
              </Data>
            </Style>
          </Column>
          <Column Field="T2" FieldType="VarChar" CaptionText="年份" IsVirtual="true" Width="320"  EditType="NoEdit" >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="left"></align>
              </Data>
            </Style>
          </Column>
          <Column Field="T3" FieldType="VarChar" CaptionText="产地" IsVirtual="true" EditType="NoEdit" Width="120" >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="left"></align>
              </Data>
            </Style>
          </Column>
          <Column Field="T4" FieldType="VarChar" CaptionText="等级" IsVirtual="true"  EditType="NoEdit" Width="120"  >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="left"></align>
              </Data>
            </Style>
          </Column>
          <Column Field="T5" FieldType="VarChar" CaptionText="类别" IsVirtual="true"  EditType="NoEdit" Width="120"  >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="left"></align>
              </Data>
            </Style>
          </Column>
          <Column Field="T6" FieldType="VarChar" CaptionText="上存" IsVirtual="true"  EditType="NoEdit" Width="120" >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="Right"></align>
              </Data>
            </Style>
          </Column>
          <Column Field="T7" FieldType="VarChar" CaptionText="接收" IsVirtual="true"  EditType="NoEdit" Width="120" >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="Right"></align>
              </Data>
            </Style>
          </Column>
          <Column Field="T8" FieldType="VarChar" CaptionText="投料" IsVirtual="true" EditType="NoEdit"  Width="120"  >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="Right"></align>
              </Data>
            </Style>
          </Column>
          <Column Field="T9" FieldType="VarChar" CaptionText="结存" IsVirtual="true" EditType="NoEdit" Width="120"   >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="Right"></align>
              </Data>
            </Style>
          </Column>
          <Column Field="T10" FieldType="VarChar" CaptionText="动态列模板" IsVirtual="true" EditType="NoEdit"  Width="100"  >
            <Style>
              <Head xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="center"></align>
              </Head>
              <Data xmlns="">
                <align xmlns="http://www.wima.com.cn/Entity" Default="right"></align>
              </Data>
            </Style>
          </Column>
          <ColumnMerges MergeRowHeader="true"/>
          <DataSource Type="Oracle" IsStore="true">
            <![CDATA[                              
               TobLeafRecordConsumption {@Search['F_Date']},{@Search['F_Date_2']},{@Search['MES_JC_WorkShopId']}
                       ]]>
          </DataSource>
          <ColumnSets>
            <!--数据源说明
              RefField:引用的列模板(可以是Grid的Column的Field,也可以是SysTemplateColumn表里的数据
              FieldName:数据的字段
              AsName:可以做为值字段
              Caption1,Caption2,Caption2:复合列显示的名称字段
            -->
            <Sql Type="Oracle" IsDynamic="true">
            </Sql>
            <ColumnSet>
              <!--动态列说明
              RefField:引用的列模板(静态列有用)
              Group:对列分组
              Sort:对列过街排序(一般以DISPLAYORDER 升序)
              Value:生成的列名字段
              Text:显示的列名的字段
              TextFormat:对显示的列名格式化
              ValueFormat:对生成的列名格式化
              注:如果全是动态的,下面配置不用做太多修改(Type="Dynamic"的Column)
              其它,参数静态复合列说明(上面)
            -->
              <Column Type="Dynamic" RefField="T10" Group="caption1"    Text="caption1" Value="asName" TextFormat="" ValueFormat="格式"></Column>
            </ColumnSet>
            <ColumnSet>
              <Column RefField="T10" Type="Dynamic"  Group="caption1" Text="caption2"  Value="asName" TextFormat="" ValueFormat="格式" Sort=""></Column>
            </ColumnSet>
          </ColumnSets>
          <Scripts>
            <Script>
              <![CDATA[          
              ]]>
            </Script>
          </Scripts>
        </Grid>
    
    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151

    网格效果:

    GridCompoundColumn2


例-网格动态列(配置)

  • 概述

    • 网格配置动态列,具体看例子。
  • 示例

    以PDM项目,科技管理-省中烟项目管理-申报立项-项目立项评审作为例子:

    <Grid Name="PDM_KJXM_SPBaseInfo" UniqueNo="10932" AllowEdit="true" HasRowIndex="true" HasDetail="false" HasChecked="true" OpenCheckedEdit="true"  EditURL="Sys/View/XSLT/Form">
          <Column Field="SP_Name"  CaptionText="项目名称" FieldType="VarChar"   Width="150" EditType="NoEdit"></Column>
          <Entity Name="PDM_KJXM_SPBaseInfo" Entity="PDM_KJXM_SPBaseInfo" IsDynamic="true" Index="2">
            <Column Field="TM" FieldType="VarChar" IsVirtual="true" Width="80" IsEdit="true" EditType="TextBox" />
            <Mapping Name="PPDM_KJXM_SPBaseInfo2PDM_KJXM_SPBaseInfo" From="PDM_KJXM_SPBaseInfo" To="PDM_KJXM_SPBaseInfo" FromField="PDM_KJXM_SPBaseInfoId" ToField="PDM_KJXM_SPBaseInfoId"></Mapping>
            <Mapping Name="PPDM_KJXM_SPBaseInfo2PDM_KJXM_SPBaseInfo" From="PDM_KJXM_SPBaseInfo" To="PDM_KJXM_SPBaseInfo" FromField="PDM_KJXM_SPBaseInfoId" ToField="PDM_KJXM_SPBaseInfoId"></Mapping>
            <SaveRule></SaveRule>
            <ColumnsSql Type="Oracle" Entity="PDM_KJXM_SPBaseInfo">
              <![CDATA[
              select PDM_KJXM_EIDefineId as Field,
              ItemName || '('||ItemMark ||')'  caption,
              'TM'RefField         
               from PDM_KJXM_EIDefine
                  where (Isdeleted is null or Isdeleted='0') and ProjectType ='{@Request['SP_ProjectType1']}'
               and EvaluateTypeCode =decode('{@Search['PDM_KJXM_PETypeId']}',null,(select PDM_KJXM_PETypeId from PDM_KJXM_PEType where EvaluateTypeCode='01' and Rownum=1),'{@Search['PDM_KJXM_PETypeId']}')              
               order by Createdon 
                ]]>
            </ColumnsSql>
            <DataSource Type="Oracle" Entity="PDM_KJXM_SPBaseInfo" Transform="ItemID" ValueField="DataValue" >
              <![CDATA[          
                      select PDM_KJXM_SPBaseInfoId,ItemID,ProjectMarkValue from PDM_KJXM_PMRecordD a
            join 
            (
            select PDM_KJXM_SPBaseInfoId,PDM_KJXM_PMRecordMId,a.ScoreState from PDM_KJXM_PMRecordM a
             join PDM_KJXM_SPBaseInfo b on a.SP_SPBaseInfo=b.PDM_KJXM_SPBaseInfoId
            where (a.Isdeleted is null or a.Isdeleted='0') and (b.Isdeleted is null or b.Isdeleted='0') 
            and nvl(a.ScoreState,0) = (
                  select nvl(max(ScoreState),0) from PDM_KJXM_PMRecordM  a  
                where a.SP_SPBASEINFO=b.PDM_KJXM_SPBaseInfoId and CREATEDBY='{@SysUserId}' 
              )
            ) b on a.EvaluateBillNO=b.PDM_KJXM_PMRecordMId
            where (a.Isdeleted is null or a.Isdeleted='0') and a.CREATEDBY='{@SysUserId}'     
            order by a.Createdon
                  ]]>
            </DataSource>
          </Entity>
          <Column Field="PDM_KJXM_PETypeId"  CaptionText="评价分类" FieldType="VarChar"  CellAlign="center"  HeaderAlign="center" Width="0" IsDisplay="false"></Column>
          <Column Field="Total"  CaptionText="合计评分" FieldType="Double"  CellAlign="center"  HeaderAlign="center" Width="100"></Column>
          <Column Field="ProjectSorts"  CaptionText="预分类" FieldType="VarChar"  CellAlign="center"  HeaderAlign="center" Width="100"></Column>
          <Column Field="ReviewConclusion1"  CaptionText="评审结论1" IsEdit="true" EditType="dropdownlist" FieldType="VarChar"  CellAlign="center" IsDictionary="true" StringMapKey="Reply" HeaderAlign="center" Width="100">
            <Sql Type="Oracle">
              <![CDATA[
                              select * from stringmap where attributename='Reply' and entity is null order by displayorder
              ]]>
            </Sql>
          </Column>
          <Column Field="ReviewConclusion2"  CaptionText="评审结论2" FieldType="VarChar" IsEdit="true" EditType="dropdownlist" CellAlign="center" IsDictionary="true" StringMapKey="EvaluateResult" HeaderAlign="center" Width="100">
            <Sql Type="Oracle">
              <![CDATA[
                              select * from stringmap where attributename='EvaluateResult' and entity is null order by displayorder
              ]]>
            </Sql>
          </Column>
          <Column Field="Comments"  CaptionText="总体评价意见及需要说明的问题" FieldType="VarChar" IsEdit="true" EditType="TextBox" CellAlign="left"  HeaderAlign="center" Width="250"></Column>
          <Events>
            <Event Name="onEditCell" Script="AfterGrid_onEditCell"></Event>
            <Event Name="onMouseOver" Script="GetMemo"></Event>
            <Event Name="onXLE" Script="initGrid"></Event>
          </Events>
          <DataSource Type="Oracle">
            <![CDATA[
              select distinct PDM_KJXM_SPBaseInfoId,b.SP_Name,Total,b.ProjectSorts,
    c.PDM_KJXM_PETypeId,c.EvaluateTypeName,ReviewConclusion1,ReviewConclusion2,Comments,State
              from PDM_KJXM_EIDefine a
              left join PDM_KJXM_PEType c on a.EvaluateTypeCode = c.PDM_KJXM_PETypeId
              join 
              (
                    select distinct a.PDM_KJXM_SPBaseInfoId,a.EvaluateTypeCode,SP_Name,c.Total,ReviewConclusion1,ReviewConclusion2,
            Comments,State,f.ProjectSorts,c.ScoreState,f.createdby
                     from PDM_KJXM_SPBaseInfo a 
                    left join statecode b on a. statecode=b.statecodeId
                    left join Projectappraisal c on a.PDM_KJXM_SPBaseInfoId=c.SP_SPBaseInfo 
                    left join Evaluationcomments d on a.PDM_KJXM_SPBaseInfoId=d.SP_BaseInfoId 
             join PDM_KJXM_PMRecordM f on a.PDM_KJXM_SPBaseInfoId=f.SP_SPBASEINFO  
                    where  (a.Isdeleted='0' or a.Isdeleted is null) and SP_ProjectType1='{@Request['SP_ProjectType1']}'
                    and  PDM_KJXM_SPBaseInfoId in (
                    select distinct SP_SPBaseInfo from  PDM_KJXM_PMRecordM 
                    where EvaluateResultMark is not null  and (isdeleted is null or isdeleted ='0')  ) and d.CREATEDBY='{@SysUserId}'  
            and c.CREATEDBY='{@SysUserId}'    and f.CREATEDBY='{@SysUserId}' 
            and nvl(c.ScoreState,0) = (
                select nvl(max(ScoreState),0) from Projectappraisal    
                 where SP_SPBASEINFO=a.PDM_KJXM_SPBaseInfoId and CREATEDBY='{@SysUserId}' 
            )
            and nvl(d.ScoreState,0) = (
              select nvl(max(ScoreState),0) from Evaluationcomments    
                 where SP_BASEINFOID=a.PDM_KJXM_SPBaseInfoId and CREATEDBY='{@SysUserId}' 
            )
            and nvl(f.ScoreState,0) = (
                select nvl(max(ScoreState),0) from PDM_KJXM_PMRecordM    
                 where SP_SPBASEINFO=a.PDM_KJXM_SPBaseInfoId and CREATEDBY='{@SysUserId}' 
            ) 
                  ) b on a.EvaluateTypeCode=b.EvaluateTypeCode            
              where (a.isdeleted is null or a.isdeleted ='0')       
                ]]>
          </DataSource>
          <Scripts>
            <Script>
              <![CDATA[ 
            // window.attachEvent("onload",initGrid)
              function initGrid()
              { 
                  if(Request.SP_ProjectType1=="1")
                  {
                       var grid=wm.c.getGrid(); 
                       for(var i=0;i<grid.columns.length;i++)
                       {
                              if(grid.columns[i].id=="ProjectSorts")
                              {
                                   grid.columns[i].width="0";
                                   grid.cellWidthPX[i]=0;
    grid.setColumnSizes(grid.hdr.clientWidth);
                              }
                       }
                  }
              }
              function AfterGrid_onEditCell(UniqueNo,rowId,cellIndex,value,val)
                           {                  
                                     var gridObj = wm.c.getGrid();
                  if(UniqueNo=='0')
                  {
                      var UserId=window.Session.User.Id;
                      var State= NewAjaxRequest("ws_PDM_KJXM_SPBaseInfo","<RecordId>"+rowId+"</RecordId><UserId>"+UserId+"</UserId>","GetProjectState");  
                      if(State=="1")
                      {
                          return false;
                      }
                      else
                      {
                           return true;
                      }
                  }
                  if(UniqueNo=="2")
                  { 
                       var Mark= NewAjaxRequest("ws_PDM_KJXM_SPBaseInfo","<Id>"+wm.c.getGrid().columns[cellIndex].id+"</Id>","GetEIDefineMark");   
                       if(eval(Mark).count>0)
                       {
                          if(parseInt(eval(Mark).data[0].ITEMMARK)<parseInt(value))
                          {
                             alert("分值不可以大于该指标总分!");
                             return false;
                          }
                          else
                          {
                              var a=0;
                              var Sort="";
                              var PETypeId=$("Search_PDM_KJXM_PETypeId").keyValue;
                              var ab = NewAjaxRequest("ws_PDM_KJXM_SPBaseInfo","<PETypeId>"+PETypeId+"</PETypeId><PROJECTTYPE>"+Request.SP_ProjectType1+"</PROJECTTYPE>","GetCountEIDefineId");
                              var thisGrid=wm.c.getGrid();               
                                              var length =thisGrid.getRowsCount();                         
                                              for(var j=3;j<parseInt(ab)+3;j++)
                                           {
                                              var Index=j-3
                                              var value1=thisGrid.selectedRows[0].getCells()[j].getValue();               
                                 a=a+parseFloat(value1);
                                           }
    thisGrid.selectedRows[0].getNamedItem("Total").keyValue=a;                          thisGrid.selectedRows[0].getNamedItem("Total").setValue(a);
                             if(Request.SP_ProjectType1=="3")
                             {
                                      if(a>85)
                                  {
                                     Sort="A";                            
                                  }
                                  else if(a<=85&&a>75)
                                  {
                                     Sort="B";                            
                                  }
                                  else if(a<=75&&a>65)
                                  {
                                      Sort="C";  
                                  }
                                  else if(a<=65&&a>=55)
                                  {
                                      Sort="D";  
                                  }
                                  else
                                  {
                                      Sort="";  
                                  }
    thisGrid.selectedRows[0].getNamedItem("ProjectSorts").keyValue=Sort;     thisGrid.selectedRows[0].getNamedItem("ProjectSorts").setValue(Sort);
                             }
                             return true;
                          }
                       }
                       else
                       {
                           return true;
                       }
                  }              
                           }    
                            function GetMemo(rowId,cellIndex)
                                {
                                  var gridObj = wm.c.getGrid();
                                  var rowCount = gridObj.getRowsCount();
    if(wm.c.getGrid().columns[cellIndex]==undefined)
                                  {
                                     return true;
                                  }
                   var id=wm.c.getGrid().columns[cellIndex].id;
                   var Memo= NewAjaxRequest("ws_PDM_KJXM_SPBaseInfo","<Id>"+id+"</Id>","GetEIDefine");                        
                   gridObj.getRows()[0].getCells()[cellIndex+1].cell.title=Memo;   
    
                                }
                              ]]>
            </Script>
          </Scripts>
        </Grid>
    
    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206

    网格效果:

    GridDynamicColumn-P


例-网格基本配置

  • 概述

    • 网格基本配置
  • 示例

    有配置数据源:

    <Grid Name="ExpInstitution" UniqueNo="10900" KeyField="ExpInstitutionId" Filter="Isdeleted is null or Isdeleted='0'" HasDetail="false" AllowEnterKey="true" EnterKeyType="left" HasRowHeader="true" AllowEdit="true" PageSize="50" FreezedIndex="0"
          EditURL="Sys/View/XSLT/Form"
          OpenType="Grid" WinWidth="600px" WinHeight="414px" >
          <!--<Column CaptionText="主键Id" Field="ExpInstitutionId" FieldType="VarChar" Width="*" IsDictionary="false" IsDisplay="true" IsVirtual="true" IsEdit="false" EditType="textbox" IsHyperLink="false" HeaderAlign="center" CellAlign="center" />-->
          <Column CaptionText="制度类型" Field="Type" FieldType="varchar" Width="80"  IsDisplay="true" IsVirtual="false"   EditType="TextBox"  />
          <Column CaptionText="制度标题" Field="Title" FieldType="varchar" Width="80"  IsDisplay="true" IsVirtual="false"   EditType="TextBox"  />
          <Column CaptionText="制度内容" Field="Content" FieldType="varchar" Width="80" IsDisplay="true" IsVirtual="false"   EditType="TextBox" />   
          <Column CaptionText="创建时间" Field="CreatedOn" FieldType="datetime" Width="120"    DataFmt="yyyy-MM-dd" IsDisplay="true" IsVirtual="false" EditType="cCalendar"   /> 
    <ColumnGroup Field="DriverSubsidy" GroupMode="Default" />
             <DataSource Type="SqlServer">
                  <![CDATA[          
                   select * from ExpInstitution where (Isdeleted is null or Isdeleted='0')         ]]>
             </DataSource>
             <Events>
                  <Event Name="OnCellDblClick"></Event>
             </Events>
             <Scripts>
            <Script>
              <![CDATA[
            function __OnAfterEnterKeyDown(row)
            {
                var grid=wm.c.getGrid();
                  var newrow=grid.addNewRow();
                return true;
            }
            ]]></Script>
          </Scripts>
        </Grid>
    没有配置数据源:
         <Grid Name="ExpInstitution" UniqueNo="10900" KeyField="ExpInstitutionId" Filter="Isdeleted is null or Isdeleted='0'" HasDetail="false" AllowEnterKey="true" EnterKeyType="left" HasRowHeader="true" AllowEdit="true" PageSize="50" FreezedIndex="0"
          EditURL="Sys/View/XSLT/Form"
          OpenType="Grid" WinWidth="600px" WinHeight="414px" >
          <!--<Column CaptionText="主键Id" Field="ExpInstitutionId" FieldType="VarChar" Width="*" IsDictionary="false" IsDisplay="true" IsVirtual="true" IsEdit="false" EditType="textbox" IsHyperLink="false" HeaderAlign="center" CellAlign="center" />-->
          <Column CaptionText="制度类型" Field="Type" FieldType="varchar" Width="80"  IsDisplay="true" IsVirtual="false"   EditType="TextBox"  />
          <Column CaptionText="制度标题" Field="Title" FieldType="varchar" Width="80"  IsDisplay="true" IsVirtual="false"   EditType="TextBox"  />
          <Column CaptionText="制度内容" Field="Content" FieldType="varchar" Width="80" IsDisplay="true" IsVirtual="false"   EditType="TextBox" />   
          <Column CaptionText="创建时间" Field="CreatedOn" FieldType="datetime" Width="120"    DataFmt="yyyy-MM-dd" IsDisplay="true" IsVirtual="false" EditType="cCalendar"   /> 
    <ColumnGroup Field="DriverSubsidy" GroupMode="Default" /> 
           <Events>
                <Event Name="OnCellDblClick"></Event>
           </Events>
          <Scripts>
            <Script>
              <![CDATA[
            function __OnAfterEnterKeyDown(row)
            {
                var grid=wm.c.getGrid();
                  var newrow=grid.addNewRow();
                return true;
            }
            ]]></Script>
          </Scripts>
        </Grid>
    
    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

    网格效果:

    GridBasicConfig

    说明: 在可编辑网格中,是否启用回车键切换焦点,与EnterKeyType配套, 当跳到下一行并且下一行为空时(即最后一行),则执行自定义事件,其他情况不执行 事件名:__OnAfterEnterKeyDown()


例-网格从表

  • 概述

    • 网格从表配置
  • 示例

    以 MES项目 物料管理-物料需求查询-原料需求查询 为例

    配置信息:

    <Grid Name="MES_DD_BatchPlan"  UniqueNo="13215" HasChecked="true" HasRowIndex="false" AllowSort="true" HasDetail="false" PageSize="50">
          <Column Field="F_PlanBegDate" CaptionText="开始时间" FieldType="DateTime" DataFmt="yyyy-MM-dd" >
          </Column>
          <Column Field="F_Name" CaptionText="车间" FieldType="VarChar" EditType="NoEdit">
            <Map Mode="ParentTable">
              <ParentTable Name="MES_JC_Workshop" PTText="F_Name" PTValue="MES_JC_WorkshopId"/>
            </Map>
          </Column>
          <Column Field="YSPH" CaptionText="烟丝牌号" FieldType="VarChar"  EditType="NoEdit"   Width="150">
            <Map Mode="ParentTable">
              <ParentTable Name="MES_JC_WIP" PTText="F_Name" PTValue="MES_JC_WIPId"/>
            </Map>
          </Column>
          <Column Field="F_PlanBatchNum" CaptionText="批号" FieldType="VarChar"   EditType="NoEdit"   ></Column>
          <Column Field="F_KunChuanBatchId" CaptionText="昆船批号" FieldType="VarChar"   EditType="NoEdit"  ></Column>
          <Column Field="F_SequenceNum" CaptionText="顺序" FieldType="VarChar"  SortOrder="Asc"></Column>
          <Column Field="F_Code" CaptionText="配方版本" FieldType="VarChar"  EditType="NoEdit">
            <Map Mode="ParentTable">
              <ParentTable Name="MES_JK_PDM_RecipeStandard" PTText="F_Code" PTValue="MES_JK_PDM_RecipeStandardId"/>
            </Map>
          </Column>
          <!--<Column Field="F_Name" CaptionText="工艺标准" FieldType="VarChar" ParentTable="MES_JC_WIP" PTValue="MES_JC_WIPId" PTText="F_Name"></Column>-->
          <Column Field="F_State" CaptionText="计划状态" FieldType="VarChar"  EditType="NoEdit" >
            <Map Mode="Dictionary"/>
          </Column>
          <DataSource Type="Oracle">
            <![CDATA[
                       select d.mes_jk_pdm_recipestandardid  as  MES_DD_BatchPlanId,
                            a.F_PlanBegDate,a.mes_jc_workshopid F_Name,c.f_name as YSPH,a.F_PlanBatchNum,a.F_KunChuanBatchId,a.F_SequenceNum,F_Code,a.F_State 
                            from MES_DD_BatchPlan a inner join MES_JC_Workshop b
                            on a.mes_jc_workshopid=b.mes_jc_workshopid
                            inner join MES_JC_WIP c on c.mes_jc_wipid=a.mes_jc_wipid
                            inner join MES_DD_Zs_Plan e on e.mes_dd_batchplanid=a.mes_dd_batchplanid
                            inner join MES_JK_PDM_RecipeStandard d on d.mes_jk_pdm_recipestandardid=e.mes_jk_pdm_recipestandardid
                ]]>
          </DataSource>
          <Childs AutoSize="True"  AutoChildData="false">
            <Child Entity="MES_JC_TobLeaf" UniqueNo="13216"  Name="MES_DD_BatchPlan" Title="片烟需求信息 "  Height="100" FKField="MES_DD_BatchPlanId">
              <PageURL><![CDATA[Sys/View/XSLT/Grid]]></PageURL>
            </Child>
            <Child Entity="MES_JC_TobLeaf" UniqueNo="13217"   Name="MES_DD_BatchPlan" Title="三丝明细" Height="100" FKField="MES_DD_BatchPlanId">
              <PageURL><![CDATA[Sys/View/XSLT/Grid]]></PageURL>
            </Child>
          </Childs>
        </Grid>
    
    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

    网格效果: GridDetail

    注:

    Description

    Childs节点配置多对多页面。 Childs由一个或多个Child节点组成 动态从表配置说明: 描述:该功能可实现从表的运行时设置,用户可以Child结点中提供从表配置信息源 ——Sql结点,平台在运行通过获取查询结果集中的信息生成从表配置信息到Xml文档对象中,Sql的查询结果必须包含Child结点属性的一个子集体,缺省的属性由Child结点的属性替代。 样例:

    <Childs>
                  <Child PageURL 
    =”**.aspx" FKField 
    =”tableId"/>
                  <Child PageURL 
    =”**.aspx" FKField 
    =”tableId">             
    <Sql>
                                <!—[DATA[Select 
    top 3 ‘path’ PageURL, 
    ‘title’ Title from table where filter]]>              
    </Sql>      
    </Child>
                  <Child PageURL 
    =”**.aspx" FKField 
    =”tableId"/>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    ​ 如本例的从表配置将生成五个从表,第二个Child结点为动态配置(因为提供了Sql),将在运行时将该Child结点转换成3 个Child结点。其它两个照常生成且顺序不变。


例-网格排序

  • 概述

    • 网格排序功能
  • 参数

    • cols

      列名加空格加排序规则

      如:"title desc"

  • 示例

    function SortOrder()
         {
            var grid=wm.c.getGrid();   
            var cells= grid.columns;   
            var cellName=cells[5].id;
            var cols=cellName+" "+"asc";//格式固定 列名加空格加排序规则
            grid.sortBy(cols);   //生成 
         }
    
    1
    2
    3
    4
    5
    6
    7
    8

例-网格分组

  • 概述

    • 网格分组js实现与配置实现
  • 示例

    • 网格分组配置实现:

      <Grid Name="StringMap"  Flag="0" PageSize="200"  AllowEdit="false" HasRowHeader="true" HasDetail="true" HasChecked="true" EditURL="Sys/View/XSLT/Form" OpenType="ShowModalDialog" WinWidth="500" WinHeight="300" >
            <Column Field="Entity"  FieldType="VarChar" CaptionText="表名" Width="100" EditType="NoEdit"></Column>
            <Column Field="AttributeName" FieldType="VarChar" CaptionText="字段名" Width="120" IsDisplay="true"  EditType="NoEdit"></Column>
            <Column Field="AttributeValue" FieldType="VarChar" CaptionText="字典值" Width="120" IsDisplay="true" EditType="NoEdit" ></Column>
            <Column Field="DisplayText" CaptionText="显示名称" FieldType="VarChar" Width="120" IsDisplay="true"  EditType="NoEdit"></Column>
            <Column Field="DisplayOrder" FieldType="VarChar" CaptionText="排序号" Width="60" IsDisplay="true" EditType="NoEdit" ></Column>
            <Column Field="ParentStringMapId" FieldType="VarChar"  CaptionText="父级字典" Width="*"  EditType="NoEdit" ></Column>
            <Column Field="Type" FieldType="VarChar" CaptionText="字典类型" IsDisplay="true" Width="0" EditType="NoEdit"></Column>
            <Events>
              <Event Name="OnCellDblClick" ></Event>
            </Events>
            <ColumnGroup Field="Type" GroupMode=""></ColumnGroup>
          </Grid>
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13

      GridOrder

      网格分组JS实现:

      <GridList>
      <Grid Name="StringMap"  Flag="0" PageSize="200"  AllowEdit="false" HasRowHeader="true" HasDetail="true" HasChecked="true" EditURL="Sys/View/XSLT/Form" OpenType="ShowModalDialog" WinWidth="500" WinHeight="300" >
            <Column Field="Entity"  FieldType="VarChar" CaptionText="表名" Width="100" EditType="NoEdit"></Column>
            <Column Field="AttributeName" FieldType="VarChar" CaptionText="字段名" Width="120" IsDisplay="true"  EditType="NoEdit"></Column>
            <Column Field="AttributeValue" FieldType="VarChar" CaptionText="字典值" Width="120" IsDisplay="true"  EditType="NoEdit"></Column>
            <Column Field="DisplayText" CaptionText="显示名称" FieldType="VarChar" Width="120" IsDisplay="true"  EditType="NoEdit"></Column>
            <Column Field="DisplayOrder" FieldType="VarChar" CaptionText="排序号" Width="60" IsDisplay="true"  EditType="NoEdit"></Column>
            <Column Field="ParentStringMapId" FieldType="VarChar"  CaptionText="父级字典" Width="*"   EditType="NoEdit"></Column>
            <Column Field="Type" FieldType="VarChar" CaptionText="字典类型" IsDisplay="true" Width="0" EditType="NoEdit"></Column>
            <Events>
              <Event Name="OnCellDblClick" ></Event>
            </Events>
            <Scripts>
              <Script>
                <![CDATA[
             window.attachEvent("onload",
              function()
              {
                  var grid=wm.c.getGrid();
                  var cg1 = {};
                  cg1["id"]="Type";//分组行 ("id"固定)
                  cg1["mode"]="Merge";//分组后呈现模式("mode"固定)
                  grid.columnGroups.push(cg1);//加入分组集合 
                  var Mygps=new Array();
                  Mygps.push("Type");//注意顺序与分组集合相同
                  grid.groupByName(Mygps);//生成
              }
              )
                ]]>
              </Script>
            </Scripts>
          </Grid>
      
      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

      用于效果:

      GridOrder3

      注:GroupMode 有layer分层,merge合并。默认值是****layer


例-网格编辑事件应用

  • 概述

    • 网格编辑事件应用
  • 参数

    • UniqueNo: (0:编辑前,1:值改变时,2:编辑后)

      rowId:行主键值

      cellIndex:单元格索引

      value:单元格的值

      val:

  • 示例

    • 可编辑的网格一般有两种应用:

      编辑前:UniqueNo=0,

      1,可以根据条件设置某个单元不可编辑

      2,可以设置下拉框的数据源

      代码如下:

      <Grid Name="PDM_KJXM_PDInfoList" UniqueNo="11000" FreezedIndex="0" AllowEdit="true"  HasDetail="false" HasRowHeader="true"  HasChecked="true" OpenCheckedEdit="true"  WinHeight="600px" WinWidth="800px" OpenType="Grid" EditURL="Sys/View/XSLT/Form">
            <Column Field="SP_SPBaseInfo" CaptionText="外ID" FieldType="VarChar" Width="0"  EditType="NoEdit"  />
            <Column Field="ProjectDeptRole" FieldType="VarChar"  Default="1" CaptionText="*类型"  EditType="Dropdown">
              <Map Mode="Dictionary"/>
            </Column>
            <Column Field="DepartmentName" CaptionText="*部门(单位)名称"   EditType="Dropdown"    FieldType="VarChar"  Width="190" >
              <Map Mode="DataSource">
                <DataSource Type="Oracle">
                  <![CDATA[
                          select SysBusinessUnitId,Caption,s.ParentSysUnitId from (select SysBusinessUnitId,Caption,DisplayOrder from SysBusinessUnit  where IsDisabled<>'1' and IsDeleted<>'1') t left join SysUnitRelation s on s.ChildSysUnitId=t.SysBusinessUnitId where SysBusinessUnitId in (select SysBusinessUnitId from SysUnitOrg where SysOrganizationId='{@sysuserorganizationid}')
                          union 
                          select PDM_KJXM_CollaborationId,CollaborationName,'' as ParentSysUnitId from PDM_KJXM_Collaboration 
                          ]]>
                </DataSource>
              </Map>
              <Args>
                <Arg Name="isLookupAndInput" Value="true"></Arg>/>
              </Args>
            </Column>
            <Column Field="LinkManName" FieldType="VarChar"   CaptionText="*联系人"  Width="80" EditType="Dropdown" >
              <Sql Type="Oracle">
                <![CDATA[
                          select SysUserId,Fullname from SysUser where IsDisabled<>'1' and IsDeleted<>'1' 
                          union 
                          select Contact,Contact from PDM_KJXM_Collaboration 
                          ]]>
              </Sql>
              <Map Mode="DataSource">
                <DataSource Type="Oracle">
                  <![CDATA[
                          select SysUserId,Fullname from SysUser where IsDisabled<>'1' and IsDeleted<>'1' 
                          union 
                          select Contact,Contact from PDM_KJXM_Collaboration 
                          ]]>
                </DataSource>
              </Map>
              <Args>
                <Arg Name="isLookupAndInput" Value="true"></Arg>/>
              </Args>
            </Column>
            <Column Field="Orders" CaptionText="顺序" FieldType="Int32"  Width="0"   EditType="NoEdit"/>
            <Column Field="Mobile" FieldType="VarChar" IsVirtual="false"  CaptionText="电00话"   EditType="TextBox"  Width="130" />
            <Column Field="Fax" FieldType="VarChar"  IsVirtual="false" CaptionText="传真"  IsEdit="true" EditType="TextBox"   Width="90" />
            <Column Field="Email" FieldType="VarChar"  IsVirtual="false"  CaptionText="电子邮箱"    EditType="TextBox"   Width="100"/>
            <Column Field="PostalCode" FieldType="Int32" IsVirtual="false"  CaptionText="邮政编码"   EditType="TextBox" Width="80"/>
            <Column Field="CommunicaitonAddress" FieldType="VarChar" IsVirtual="false"   EditType="TextBox"  CaptionText="通讯地址"  Width="190" />
            <DataSource Type="Oracle">
              <![CDATA[                      
                      select a.PDM_KJXM_PDInfoListId,a.SP_SPBaseInfo,
                      a.ProjectDeptRole,a.DepartmentName,a.LinkManName,
      a.Mobile,a.Fax,a.Orders,a.Email,a.PostalCode,a.CommunicaitonAddress
                      from PDM_KJXM_PDInfoList a 
                      left join SysUser c on a.LinkManName=c.SysUserId
                      left join PDM_KJXM_Collaboration d on   
                      d.PDM_KJXM_CollaborationId=a.DepartmentName
                      where (a.IsDeleted='0' or a.IsDeleted is null)
                      and  a.SP_SPBaseInfo='{@Request['ParentId']}'   order by Orders
                      ]]>
            </DataSource>
            <Events>
              <Event Name="onEditCell" Script="BeforeGrid_onEditCell"></Event>
            </Events>
            <Scripts>
              <Script>
                <![CDATA[       
                      function BeforeGrid_onEditCell(UniqueNo,rowId,cellIndex,value,val)
                      {       
                          if(UniqueNo=='0')
                           {      
      if(wm.c.getGrid().columns[cellIndex].id=="Mobile")
                              {
                                 return false;   //不可编辑
                              }
      if(wm.c.getGrid().columns[cellIndex].id=="DepartmentName")  //添加部门下拉数据
                              {
                                  var thisGrid = wm.c.getGrid();
                                  var rows = thisGrid.selectedRows;
      if(rows[0].getNamedItem("ProjectDeptRole").cell.keyValue!="&nbsp;")
                                      {
      if(rows[0].getNamedItem("ProjectDeptRole").cell.keyValue=='3')
                                          {
                                              thisGrid.combos[cellIndex] = new dhtmlXGridComboObject();//获取下拉对象
                                              var c = new dhtmlXGridComboObject();
           if(rows[0].getNamedItem("ProjectDeptRole").cell.modify)
                                              { 
       rows[0].getNamedItem("DepartmentName").setValue("");
                                              }
                    var Collaboration=NewAjaxRequest("ws_PDM_KJXM_SPBaseInfo","","GetCollaboration");//获取数据源
                                               eval(Collaboration);
      if(eval(Collaboration)==undefined)
                                               {
                                                  return false;
                                               }
                                               for(var n=0;n<json.count;n++)
                                               {                           if(json.data[n].PDM_KJXM_COLLABORATIONID!=undefined&&json.data[n].COLLABORATIONNAME!=undefined)
                                                      {
                                                          var value=json.data[n].PDM_KJXM_COLLABORATIONID;  
                                                          var text=json.data[n].COLLABORATIONNAME;
                                             c.put(value,text);//添加数据
                                    thisGrid.combos[cellIndex] = c;
      
                                                      }
                                               }  
                                                  return true;
                                          }                               
                                      }
                              }
                              return true;
                           }                 
                       }
                              ]]>
              </Script>
            </Scripts>
          </Grid>
      
      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
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114

      效果图:

      GridEditEvent

      编辑后:UniqueNo=2

      1,根据某个单元格的值设置某个单元格的值

      2,某两个单元格大小比较

      代码如下:

      <Grid Name="PDM_KJXM_PBOutlay" UniqueNo="10905" title="经费支出" Caption="经费支出" FreezedIndex="0" AllowAddNew="" AllowEdit="true" HasDetail="false" HasRowHeader="true" HasChecked="false" Filter="IsDeleted='false' ">
            <Column Field="PDM_KJXM_SSTableId" CaptionText="科目"   FieldType="VarChar" Width="0"  EditType="NoEdit"  ></Column>
            <Column Field="SubjectName" CaptionText="科目" FieldType="VarChar" Width="150"  EditType="NoEdit" ></Column>
            <Column Field="BudgetAmount" CaptionText="预算数(万元)" FieldType="Double" Width="100"   EditType="TextBox"></Column>
            <Column Field="CheckAmount" CaptionText="审定数(万元)" FieldType="Double" Width="100"    EditType="TextBox"></Column>
            <Column Field="Memo" CaptionText="用途说明" FieldType="VarChar" Width="200"  EditType="NoEdit"    ></Column>
            <DynamicColumn IsEdit="true" Width="80" ></DynamicColumn>
            <Events>
              <Event Name="onEditCell" Script="AfterGrid_onEditCell"></Event>
              <Event Name="onAfterRefresh" Script="initStyle()"></Event>
            </Events>
            <DataSource Type="Oracle">
              <![CDATA[
                              select aa.* from (
                                  select  Sub.PDM_KJXM_SSTableId,
                                  Lay.BudgetAmount,
                                  Sub.SubjectName,
                                  Lay.PDM_KJXM_PBOutlayId,                 
                                  Lay.CheckAmount,Lay.Memo,
                                  Sub.SubjectNO
                                  from (select ps.SubjectNO,
                                  ks.SubjectCode,
                                  ks.SubjectName,                     
                                  ps.BudgetSubjectType,
                                  ps.PDM_KJXM_PBDefaultSubjectsId,
                                  ks.PDM_KJXM_SSTableId 
                                  from PDM_KJXM_PBDefaultSubjects ps 
                                  join PDM_KJXM_SSTable ks on ks.PDM_KJXM_SSTableId=ps.SubjectNativeID
                                  where (ps.IsDeleted='0' or ps.IsDeleted is null or Lower(ps.IsDeleted)='false')    
                                  and ks.SubjectName not in('对院校支出','对企业支出') and ps.BudgetSubjectType='2'  order by ps.SubjectNO ) Sub
                                  left join PDM_KJXM_PBOutlay Lay 
                                  on Lay.PDM_KJXM_SSTableid=Sub.PDM_KJXM_SSTableid 
                                  and SP_SPBaseInfo='{@Request['id']}' 
                                  union all
                                  select  SP_SPBaseInfo,
      decode(sum(Lay.BudgetAmount),null,0.00,sum(Lay.BudgetAmount)),
                                  '支出预算合计' as SubjectName,
                                  '' as PDM_KJXM_PBOutlayId,               decode(sum(CheckAmount),null,0.00,sum(CheckAmount)) as CheckAmount,'' as Memo,
                                  0 as SubjectNO  
                                  from (select ps.SubjectNO,
                                  ks.SubjectCode,
                                  ks.SubjectName,                     
                                  ps.BudgetSubjectType,
                                  ps.PDM_KJXM_PBDefaultSubjectsId,
                                  ks.PDM_KJXM_SSTableId 
                                  from PDM_KJXM_PBDefaultSubjects ps 
                                  join PDM_KJXM_SSTable ks on ks.PDM_KJXM_SSTableId=ps.SubjectNativeID
                                  where (ps.IsDeleted='0' or ps.IsDeleted is null or Lower(ps.IsDeleted)='false')    
                                  and ps.BudgetSubjectType='2'  and SubjectName not in('对院校支出','对企业支出') order by ps.SubjectNO ) Sub
                                  left join PDM_KJXM_PBOutlay Lay 
                                  on Lay.PDM_KJXM_SSTableid=Sub.PDM_KJXM_SSTableid 
                                  and SP_SPBaseInfo='{@Request['id']}'    
                                  group by SP_SPBaseInfo
                                      union all 
                                 select Sub.PDM_KJXM_SSTableId,Lay.BudgetAmount,'其中:对院校支出' as SubjectName,Lay.PDM_KJXM_PBOutlayId,Lay.CheckAmount,Lay.Memo,Sub.SubjectNO
                                  from (select ps.SubjectNO,ks.SubjectCode,ks.SubjectName,ps.BudgetSubjectType,ps.PDM_KJXM_PBDefaultSubjectsId,  
                                      ks.PDM_KJXM_SSTableId from PDM_KJXM_PBDefaultSubjects ps   
                                      join PDM_KJXM_SSTable ks on ks.PDM_KJXM_SSTableId=ps.SubjectNativeID  
                                  where (ps.IsDeleted='0' or ps.IsDeleted is null or Lower(ps.IsDeleted)='false')       
                                  and ks.SubjectName ='对院校支出' and ps.BudgetSubjectType='2'  order by ps.SubjectNO ) Sub  
                                  left join PDM_KJXM_PBOutlay Lay on Lay.PDM_KJXM_SSTableid=Sub.PDM_KJXM_SSTableid   
                                  and SP_SPBaseInfo='{@Request['Id']}'   
                              union all 
                              select Sub.PDM_KJXM_SSTableId,Lay.BudgetAmount,'   对企业支出' as SubjectName,Lay.PDM_KJXM_PBOutlayId,Lay.CheckAmount,Lay.Memo,Sub.SubjectNO
                                  from (select ps.SubjectNO,ks.SubjectCode,ks.SubjectName,ps.BudgetSubjectType,ps.PDM_KJXM_PBDefaultSubjectsId,  
                                      ks.PDM_KJXM_SSTableId from PDM_KJXM_PBDefaultSubjects ps   
                                      join PDM_KJXM_SSTable ks on ks.PDM_KJXM_SSTableId=ps.SubjectNativeID  
                                  where (ps.IsDeleted='0' or ps.IsDeleted is null or Lower(ps.IsDeleted)='false')       
                                  and ks.SubjectName ='对企业支出' and ps.BudgetSubjectType='2'  order by ps.SubjectNO ) Sub  
                                  left join PDM_KJXM_PBOutlay Lay on Lay.PDM_KJXM_SSTableid=Sub.PDM_KJXM_SSTableid   
                                  and SP_SPBaseInfo='{@Request['Id']}'   
                                  ) aa
                                  order by SubjectNO
                ]]>
            </DataSource >
            <Scripts>
              <Script>
                <![CDATA[      
                              window.attachEvent("onload",initStyle);
                              function initStyle()
                              { 
                                  var thisGrid=wm.c.getGrid();  
                                  var getrows=thisGrid.getRows();
                                  var count = thisGrid.getRowsCount();
                                  thisGrid.getRows()[0].getCells().getNamedItem("SubjectName").cell.style.color="Red";
                                  thisGrid.getRows()[0].getCells().getNamedItem("BudgetAmount").cell.style.color="Red";
                                  thisGrid.getRows()[0].getCells().getNamedItem("CheckAmount").cell.style.color="Red";
                                  thisGrid.getRows()[0].getCells().getNamedItem("Memo").cell.style.color="Red";    
                              }   
                              function AfterGrid_onEditCell(UniqueNo,rowId,cellIndex,value,val)
                              { 
                                  var Num=0.00;
                                  var gridObj = wm.c.getGrid();
                                  var getrows=gridObj.getRows();
                                  var count = gridObj.getRowsCount();
                                 if(UniqueNo=='2')
                                  {
       if(wm.c.getGrid().columns[cellIndex].id=="CheckAmount")
                                      {
                                          var Id=rowId;
                                              var Sum=0;
                                              for(var i=1;i<count;i++)
                                              {
                                                  var SubjectName=gridObj.getRows()[i].getNamedItem("CheckAmount").getValue();
                                                  if(SubjectName=="其中:对院校支出"||SubjectName=="   对企业支出")
                                                  {  
                                                    continue;
                                                  }
                                                  var aa=gridObj.getRows()[i].getNamedItem("CheckAmount").getValue();
                                                  if(aa=="&nbsp;"||aa=="<nobr>&nbsp;</nobr>"||aa==""||aa==" ")
                                                  {
                                                      aa=0; 
                                                  }
      Sum=parseFloat(Sum)+parseFloat(aa);
                                              }
                                              gridObj.getRows()[0].cells(4).keyValue=Sum;
                                              gridObj.getRows()[0].getCells()[4].setValue(Sum); //设置单元格的值
                                              var thisGrid = wm.c.getGrid();
                                              var rows = thisGrid.selectedRows;
                                              var SubName=rows[0].getNamedItem("SubjectName").getValue();
                                              var BudgetAmount=rows[0].getNamedItem("CheckAmount").getValue();
                                              if(SubName=="其中:对院校支出"||SubjectName=="   对企业支出")
                                              {
                                                  var a1="";
                                                  var b1="";
                                                  var c1="";
                                                  var a2="";
                                                  var b2="";
                                                  var c2="";
                                                 for(var i=1;i<count;i++)
                                                  {
                                                      var Subject=gridObj.getRows()[i].getNamedItem("SubjectName").getValue();
                                                      var Budget=gridObj.getRows()[i].getNamedItem("CheckAmount").getValue();
                                                      if(Subject=="其中:对院校支出")
                                                      {  
                                                        a1=i;
                                                        a2=Budget;
                                                      }
                                                      if(Subject=="   对企业支出")
                                                      {
                                                        b1=i;
                                                        b2=Budget;
                                                      }
                                                      if(Subject=="对外支出")
                                                      {
                                                        c1=i;
                                                        c2=Budget;
                                                      }
                                                  }
                                                  if(parseInt(c2)<parseInt(a2)+parseInt(b2))  //比较大小
                                                  { 
                                                     alert("对院校支出、对企业支出之和大于支出之合,请重新输入!");
                                                     return false;
                                                  }
                                              }
                                              return true;
                                      }
                                  }
                                  return true;
                              }
                          ]]>
              </Script>
            </Scripts>
          </Grid>
      
      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
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      149
      150
      151
      152
      153
      154
      155
      156
      157
      158
      159
      160
      161
      162
      163
      164

      效果如下:

      GridEditEvent2


例-网格列动态隐藏

  • 概述

    • 网格列动态隐藏
  • 示例

    <Grid Name="ExpInstitution" UniqueNo="0" HasRowHeader="true" AllowEdit="false" EditURL="Sys/View/XSLT/Form" PagingSize="50" OpenType="showmodaldialog" WinWidth="800px" WinHeight="510px">
          <Column Field="FilesCode" FieldType="VarChar" CaptionText="文件编号" Width="100" SortOrder="Desc" EditType="NoEdit">
          </Column>
          <Column Field="Title" FieldType="VarChar" CaptionText="文件主题" Width="200"  SortOrder="Desc" EditType="NoEdit">
          </Column>
          <Column Field="IsAllowed" FieldType="VarChar" CaptionText="是否审核" Width="80" EditType="NoEdit" >
            <Map Mode="Dictionary"/>
          </Column>
          <Column Field="CreatedOn" FieldType="DateTime" CaptionText="发布时间" Width="120" EditType="NoEdit"  SortOrder="Desc" >
          </Column>
          <Column Field="CreatedBy" FieldType="VarChar" CaptionText="发布人" Width="80" SortOrder="Asc" EditType="NoEdit" >
            <Map Mode="ParentTable">
              <ParentTable Name="SysUser"/>
            </Map>
          </Column>
          <Column Field="StateCode" FieldType="VarChar"  CaptionText="状态" Width="0" SortOrder="Asc" EditType="NoEdit" >
            <Map Mode="Dictionary"></Map>
          </Column>
          <Events>
            <Event Name="OnCellDblClick" Script="">
            </Event>
          </Events>
          <Scripts>
            <Script>
              <![CDATA[
           window.attachEvent("onload",
            function()
            { 
                var gridObj=wm.c.getGrid();
                gridObj.columns[3].width="0";
                gridObj.cellWidthPX[3]=0;
                gridObj.setColumnSizes(gridObj.hdr.clientWidth);   
            }
            )
              ]]>
            </Script>
          </Scripts>
        </Grid>
    
    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

    网格效果:“发布时间”列被隐藏

    GridColumn-H


例-网格单元格操作

  • 概述

    • 网格单元格样式调整
  • 示例

    <Grid Name="ExpInstitution" KeyField="ExpInstitutionId" HasDetail="false" AllowEnterKey="true" EnterKeyType="left" HasRowHeader="true" AllowEdit="true" PageSize="50" FreezedIndex="0" EditURL="Sys/View/XSLT/Form" OpenType="Grid" WinWidth="600px" WinHeight="414px" UniqueNo="10900">
          <Column CaptionText="主键Id" Field="ExpInstitutionId" FieldType="VarChar" Width="*"  IsDisplay="true" IsVirtual="true"  EditType="NoEdit"  />
          <Column CaptionText="制度类型" Field="Type" FieldType="VarChar" Width="80"   IsDisplay="true" IsVirtual="false"   EditType="TextBox" />
          <Column CaptionText="制度标题" Field="Title" FieldType="VarChar" Width="80"   IsDisplay="true" IsVirtual="false"   EditType="TextBox"  />
          <Column CaptionText="制度内容" Field="Content" FieldType="VarChar" Width="80"  IsDisplay="true" IsVirtual="false"    EditType="TextBox" />
          <Column  CaptionText="是否禁用" Field="IsDisabled" FieldType="VarChar"    Width="120"    EditType="Check" ></Column>
          <Column CaptionText="创建时间" Field="CreatedOn" FieldType="DateTime" Width="120"  DataFmt="yyyy-MM-dd" IsDisplay="true" IsVirtual="false"  EditType="Calendar"  />
          <DataSource Type="SqlServer">
            <![CDATA[          
                   select * from ExpInstitution 
               ]]>
          </DataSource>
          <Scripts>
            <Script>
              <![CDATA[
             window.attachEvent("onload",
            function()
            {   
                var grid=wm.c.getGrid();
                var Rows=grid.getRows();
                for(var i=0;i<Rows.length;i++)
                {
                  if(Rows[i].getNamedItem("IsDisabled").isCheckbox())//判断是否为CheckBox类单元格
                     var isChecked=Rows[i].getNamedItem("IsDisabled").isChecked();//获取checked值
                  Rows[i].getNamedItem("Title").setDisabled("true");//设置禁用
                  var isDisabled=Rows[i].getNamedItem("Title").isDisabled();//获取disabled值
                  Rows[i].getNamedItem("Title").setHorAlign("c");//设置水平对齐方式c:center,l:left,r:right
                  var HorAlign=Rows[i].getNamedItem("Title").getHorAlign();//获取水平对齐方式
                  Rows[i].getNamedItem("Title").setValue("设置");//设置值
                  var Title=Rows[i].getNamedItem("Title").getValue();//获取值
                  var colobj=Rows[i].getNamedItem("Title").cell;//获得单元格对象
                  colobj.style.backgroundColor="red";//背景颜色 或 Rows[i].getNamedItem("Title").setBgColor("red");
                  colobj.style.color="yellow";//字体颜色或Rows[i].getNamedItem("Title").setTextColor("yellow");,其他类推
                }              
            }
            )
            ]]>
            </Script>
          </Scripts>
        </Grid>
    
    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

    效果图:

    GridCell


例-网格列名设置

  • 概述

    • 网格列名设置
  • 参数

    • index:索引

      colName:列名

  • 示例

     function SortOrder()
         {
            var grid=wm.c.getGrid();   
            grid.setColumnLabel(2, "测试"); //"2"是列索引,"测试"为设置成的列名   
         }
    
    1
    2
    3
    4
    5

例-网格新增行

  • 概述

    • 网格新增行 js实现
  • 示例

    <Grid Name="ExpInstitution" UniqueNo="0" HasRowHeader="true" AllowEdit="false" EditURL="Config/Edit.aspx" PagingSize="50" OpenType="ShowModalDialog" WinWidth="800px" WinHeight="510px">
          <Column Field="FilesCode" FieldType="VarChar" CaptionText="文件编号" Width="100" EditType="NoEdit" SortOrder="Desc">
          </Column>
          <Column Field="Title" FieldType="VarChar" CaptionText="文件主题" Width="200"  EditType="NoEdit" SortOrder="Desc">
          </Column>
          <Column Field="IsAllowed" FieldType="VarChar" CaptionText="是否审核" Width="80"  EditType="NoEdit" SortOrder="Desc">
            <Map Mode="Dictionary"/>
          </Column>
          <Column Field="CreatedOn" FieldType="DateTime" CaptionText="发布时间" Width="120" EditType="NoEdit" SortOrder="Desc">
          </Column>
          <Column Field="CreatedBy" FieldType="VarChar" CaptionText="发布人"  EditType="NoEdit" SortOrder="Asc" Width="80" >
            <Map Mode="ParentTable">
              <ParentTable Name="SysUser"/>
            </Map>
          </Column>
          <Column Field="StateCode" FieldType="VarChar"  CaptionText="状态" Width="0"  SortOrder="Asc"  EditType="NoEdit" >
            <Map Mode="Dictionary"/>
          </Column>
          <Events>
            <Event Name="OnCellDblClick">
            </Event>
          </Events>
          <Scripts>
            <Script>
              <![CDATA[
           window.attachEvent("onload",
            function()
            { 
                var grid=wm.c.getGrid();
                var rows=grid.getRows();
                var CreatedOn=rows[0].getNamedItem("CreatedOn").getValue().replace("&nbsp;",""); //获得第一行值,假设存在数据
                var CreatedBy=rows[0].getNamedItem("CreatedBy").getValue().replace("&nbsp;",""); 
                var StateCode=rows[0].getNamedItem("StateCode").getValue().replace("&nbsp;",""); 
                var nRow=grid.addNewRow();//调用新增行方法
                nRow.getNamedItem("FilesCode").setValue("新增");//给新增行赋值
                nRow.getNamedItem("Title").setValue("新增");
                nRow.getNamedItem("IsAllowed").setValue("新增");
                nRow.getNamedItem("CreatedOn").setValue(CreatedOn);
                nRow.getNamedItem("CreatedBy").setValue(CreatedBy);
                nRow.getNamedItem("StateCode").setValue(StateCode);
            }
            )
              ]]>
            </Script>
          </Scripts>
        </Grid>
    
    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

    效果图:

    GridAddRow


例-网格下拉配置

  • 概述

    • 网格下拉配置

      包括(下拉树跟普通下拉)

  • 参数

    • Sql节点: select t.id id, t.caption text,t.parentId pId ,t.elseKeyField elseKeyField from tableName t 基本下拉:要返回id,text两个列 下拉树:要返回id,text,pId 三个列 键值不是id的下拉树:要返回id,text,pId 三个列,还要有elseKeyField列
  • 示例

    <Grid Name="PDM_KJXM_PMList" UniqueNo="11200" FreezedIndex="" HasRowIndex="true" AllowEdit="true" AllowSort="false" HasChecked="true" OpenCheckedEdit="true"  HasDetail="false" HasRowHeader="true"  OpenType="Grid"   EditURL="Sys/View/XSLT/Form"  PagingSize="200">
          <Column Field="Ownershipunits" CaptionText="*人员归属"   FieldType="VarChar"  EditType="Dropdown"  Width="85" />
          <Column Field="Dept" CaptionText="所属部门" FieldType="VarChar"     IsVirtual="true"  EditType="Dropdown"   Width="150" >
            <Map Mode="DataSource">
              <DataSource Type="Oracle">
                <![CDATA[
                           select *from (select SysBusinessUnitId id,Caption text,s.ParentSysUnitId Pid,'1' Typ from (select SysBusinessUnitId,Caption,DisplayOrder from SysBusinessUnit  where IsDisabled<>'1' and IsDeleted<>'1') t left join SysUnitRelation s on s.ChildSysUnitId=t.SysBusinessUnitId where SysBusinessUnitId not in (select * from table(select  GetUnitChild(SysbusinessunitId) from Sysbusinessunit where caption='系统外'))
                           union 
                           select PDM_KJXM_CollaborationId id,CollaborationName text,'' as Pid,'2' Typ from PDM_KJXM_Collaboration ) where decode('{@Request['__ddParam_0']}','1',Typ,'2',Typ,'1')=decode('{@Request['__ddParam_0']}','1','1','2','2','1')
                           ]]>
              </DataSource>
            </Map>
            <Args>
              <Arg Name="isLookupAndInput" Value="true"/>
            </Args>
          </Column>
          <Column Field="PersonnelNativeID" CaptionText="*姓名"   EditType="Dropdown" FieldType="VarChar"  Width="90"  >
            <Map Mode="DataSource">
              <DataSource Type="Oracle">
                <![CDATA[
                            select SysUserId,Fullname from SysUser --where IsDisabled<>'1' and IsDeleted<>'1' 
                           union 
                           select PDM_KJXM_ForeignCoWorkersId,Fullname from PDM_KJXM_ForeignCoWorkers  --where IsDeleted<>'1' 
                           ]]>
              </DataSource>
            </Map> 
            <Args>
              <Arg Name="isLookupAndInput" Value="true"/>
            </Args>
            <Verify Type="NotEmpty"/>
          </Column>
          <Column Field="ProjectPersonRole" CaptionText="*人员角色"    Default="3"  EditType="Dropdown"   FieldType="VarChar"  Width="90"  >
            <Map Mode="Dictionary">
              <Dictionary Name="ProjectPersonRole"/>
            </Map>
            <Args>
              <Arg Name="isLookupAndInput" Value="true"/>
            </Args>
            <Verify Type="NotEmpty"/>
          </Column>
          <DataSource Type="Oracle">
            <![CDATA[
                       select
                           --rownum as num,
                           pl.PDM_KJXM_PMListId,
                           pl.SP_SPBaseInfo,
                           pl.Ownershipunits,
                           pl.PersonnelNativeID,
                           pl.ProjectPersonRole,
                           pl.Gender,
                           (select sysbusinessunitId from sysbusinessunit where sysbusinessunitid=(select sysbusinessunitid from SysUserUnit where sysuserid=pl.PersonnelNativeID and sysbusinessunitid is not null and rownum=1)
                           union 
                           select PDM_KJXM_CollaborationId  from PDM_KJXM_Collaboration where PDM_KJXM_CollaborationId=(select Affiliations from PDM_KJXM_ForeignCoWorkers where PDM_KJXM_ForeignCoWorkersId=pl.PersonnelNativeID and rownum=1)
                           ) Dept,
                           pl.Age,
                           pl.Education,
                           pl.Professional,
                           pl.Title,
                            pl.Affiliations,
                           pl.Tel,
                           --sy.HomePhone as Mobile,
                           pl.Email,
                           pl.ProjectTask,
                           pl.Orders,
                           pl.Createdon,
                           sm.displayorder
                       from PDM_KJXM_PMList pl
                       left join StringMap sm on sm.attributeName='ProjectPersonRole'and sm.ENTITY is null and  pl.ProjectPersonRole=sm.attributevalue and sm.displayorder is not null   
                       where(Lower(pl.IsDeleted)='false' or pl.IsDeleted='0' or pl.IsDeleted is null) and SP_SPBaseInfo='{@Request['ParentId']}'
                       order by Orders
                  ]]>
          </DataSource>
          <Events>
            <Event Name="onEditCell" Script="BeforeGrid_onEditCell"></Event>
          </Events>
        </Grid>
    
    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

    效果图:

    DropDown1

    DropDown2


例-网格右键菜单

  • 概述

    • 配置网格的右键菜单,如果没配置菜单内容时,则在网格右键时和平时一样弹出IE默认的右键内容
  • 示例

    菜单内容是在配置文件里的ToolBarList节点下的 RightMenus节点中设置,格式如下:

    Name:相当于ID, Text:显示名称 Image:图标 Action:Js事件名

    如果是分隔条的,那么 Text设置为"-"即可,如下面的M9。

    <ToolBarList>
             <ToolBar UniqueNo="0">
                <RightMenus>
                    <Menu Name="m1" Text="菜单一" Image="WebToolBar/16_Print.gif" Action="Js事件名"></Menu>
                    <Menu Name="m2" Text="菜单二" >
                        <Menu Name="m3" Text="子菜单一"  Image="WebToolBar/16_Import.gif" Action="Js事件名"></Menu>
                        <Menu Name="m4" Text="子菜单二"  Action="Js事件名"></Menu>
                        <Menu Name="m5" Text="子菜单三" >
                            <Menu Name="m8" Text="子子菜单一" ></Menu>
                            <Menu Name="m9" Text="-" ></Menu>
                            <Menu Name="m10" Text="子子菜单二" ></Menu>
                        </Menu>
                    </Menu>
                    <Menu Name="m6" Text="菜单三" Action="Js事件名"></Menu>
                    <Menu Name="m7" Text="菜单四" Action="Js事件名"></Menu>
                </RightMenus>
            </ToolBar>
        </ToolBarList>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    效果图:

    GridRightClickMenu


例-手动设置冻结列数

  • 概述

    • 在已经设置了冻结列的网格中手动的设置冻结列的列数
  • 示例

    在网格中通过调用JavaScript\Common.js中的方法wm.c.setGridFreezed  如
    <Button Target="Grid" Name="cmd手动冻结列测试" Text="手动冻结列测试" ToolTip="手动冻结列测试" Type="Normal" Image="WebToolBar/16_look.gif" DisplayMode="TextAndImage" Script="wm.c.setGridFreezed()"></Button>
    
    1
    2

    点击后出现的是:

    FreezeColumn

    输入大于0的整数后(不等于原来的)冻结列重新调整。


例-网格视图

  • 概述

    • 网格视图例子
  • 示例

    和普通表的网格配置一样,只是多了一个View属性(值为视图名称)

    <Grid Name="CRM_IC_AddGoodsConfirm" View="v_CRM_IC_AddGoodsConfirm12400"   UniqueNo="12400"  HasRowHeader="true"  HasChecked="true" HasDetail="false" AllowEdit="false" EditURL="Sys/View/XSLT/Form">
          <Column Field="RequestNum" CaptionText="单据号" FieldType="VarChar"  EditType="NoEdit" Width="100"/>
          <Column Field="CRM_KH_AccountCode" CaptionText="公司编号" FieldType="VarChar"  EditType="NoEdit" Width="100"/>
          <Column Field="CRM_KH_AccountName" CaptionText="公司名称" FieldType="VarChar"  EditType="NoEdit" Width="250" />
          <Childs AutoSize="true">
            <Child Name="CRM_IC_AddGoodsConfirmEntry"   UniqueNo="12401" Title="补货细目" Height="200" FKField="CRM_IC_AddGoodsConfirmId">
              <PageURL><![CDATA[]]></PageURL>
            </Child>
          </Childs>
        </Grid>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

例-动态改变某些单元格的编辑类型

  • 概述

    • 有些特殊业务,网格的某些列在某些行中编辑类型不一样,如第三列, 在第一行中是文本类型,在第二行中是下拉类型,这时需要用JS进行改变
  • 示例

    有些特殊业务,网格的某些列在某些行中编辑类型不一样,如第三列, 在第一行中是文本类型,在第二行中是下拉类型,这时需要用JS进行改变。

    网格绑定onEditCell编辑前事件:

    <Events>
    
         <Event Name="onEditCell" Script="BeditCell">
    
         </Event>
    
    </Events>
    
    JS方法:
    
    <Scripts>
            <Script>
              <![CDATA[
                var onceLoadChild = true;
                function BeditCell(UniqueNo,rowid,cellIndex){
                    var grid = wm.c.getGrid();
                    if(UniqueNo==0){
                         if(cellIndex==2){  //判断是那行那个单元格
                            grid.cell._cellType='txt'  //下拉类型是drop 文本类型是 txt
                            grid.editor = grid.cells4(grid.cell);
                         }
                     }
                     return true;
                 }
              ]]>
            </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
    25
    26
    27

例-网格相关方法和事件

  • 概述

    • 例-网格相关方法和事件
  • 示例

    /*********网格相关方法及事件****************/
    //==网格工具栏相关==
    //新增
    wm.c.webGridAppend();
    //删除
    wm.c.webGridDelete({});
    //下载当前记录对应附件
    wm.c.webGridDownload();
    //刷新
    wm.c.webGridRefresh();
    //修改选中行数据(用于触摸时的修改)
    wm.c.webGridRowDblClick(wm.c.getGrid().getSelectedId());
    //保存
    wm.c.webGridSave({});
    ////网格操作相关方法
    //取网格对象
    var gridObj = wm.c.getGrid();
    //取所有行
    var rows = gridObj.getRows();
    //取得勾选行
    var scRows = gridObj.getCheckedRowList();
    //取得行对象
    var rowIndex = 0;
    var row = gridObj.getRow(rowIndex);
    //取得行id
    var recId = row.idd;
    //取得指定id的行
    var row2 = gridObj.getRowById(recId);
    //取得所有列
    var cells = rows[0].getCells();
    //取得指定列
    var cell = rows[0].getNamedItem("fieldName");
    //取得列的值
    var keyValue = cell.getValue();
    //取得列的显示值
    var text = cell.getText();
    //设置值
    cell.setValue(keyValue);
    //设置显示值和内部值
    cell.setCValue2(text, keyValue);
    //请求参数
    gridObj.addInput("name", "value");
    //刷新
    gridObj.refresh();
    ////网格事件
    //配置Events/Event/@Name 或者gridObj.attachEvent("onRowDblClicked",funName);
    
    /*
    onScroll    网格滚动条滚动时触发   scrollLeft:左边距
    scrollTop:右边距
    onResizeEnd    拖动改变列大小结束时触发    gridObj:当前网格对象
    onResize  拖动改变列大小时触发   colIndex:列索引
    beginW:起始大小
    gridObj:当前网格对象
    onRightClick    未知 rowId:行主键值
    cellIndex:单元格索引
    ev:当前Event对象
    onBeforeContextMenu    右键菜单显示前触发        rowId:行主键值
    cellIndex:单元格索引
    gridObj:当前网格对象
    onBeforeSelect          行选中前触发  rowId:行主键值
    prevRowId:上一选中行主键值(第一次选择行时为0)
    evCell:当前Event对象(cell对象)
    注释:(20100825-ywb修改:增加evCell参数)
    onRowSelect    行选中时触发  rowId:行主键值
    cellIndex:单元格索引
    onSelectStateChanged      选中状态改变时触发        afinal: 
    initial:
    onEditCell         单元格编辑时触发   flag: (0:编辑前,1:值改变时,2:编辑后)
    rowId:行主键值
    cellIndex:单元格索引
    value:
    val:
    onKeyPress       键盘按下按键时触发        keyCode:按键值
    ctrlKey:是否按下Ctrl键
    shiftKey:是否按下Shift键
    ev:当前Event对象
    onRowDblClicked    行双击时触发  rowId:行主键值
    cellIndex:单元格索引
    onHeaderClick 列标题头单击时触发        colIndex:列索引
    ev:当前Event对象
    onRowIdChange      行主键值更改时触发        oldRowId:旧主键值
    newRowId:新主键值
    onClearAll         清空数据时触发       
    onBeforeSorting        列排序前触发  colIndex:列索引
    fldSort:原始排序数据
    sortType:排序类型(asc|desc)
    onMouseOver  鼠标离开时触发       rowId:行主键值
    cellIndex:单元格索引
    onEnter    按下回车键时触发   rowId:行主键值
    cellIndex:单元格索引
    onTab       按下Tab键时触发    isShiftKey:是否同时按下Shift键
    onRowCreated 行创建时触发  rowId:行主键值
    rowObj:行对象
    onAfterSorting 排序后触发      colIndex:列索引
    type:排序数据
    order:顺序
    onBeforeRowDeleted        行删除前触发  rowId:行主键值
    onAfterRowDeleted 行删除后触发  rowId:行主键值
    pId:上级ID(仅当网格为树状呈现时有效)
    onRowAdded   行添加时触发  rowId:行主键值
    */
    
    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102