zoukankan      html  css  js  c++  java
  • ExtJs3.3的一些使用心得

    因为最近学习了一些ExtJs相关的知识,也解决了一些自己想要的效果,在此记录一下。

    1.如何在grid里调出一个colorMenu来

    2.如何设置grid里某些行可以编辑,某些行不可以编辑,某些行的行颜色不一样,某些行某些列的字体颜色等样式不一样

    3.如何控制一些行的checkbox不可以点击,一些可以点击

    4.如何设置拖拽的时候,符合条件的才可以拖拽过去,不符合条件的不可以拖拽过去

    那么首先看第一个问题:

    这也是我第一个弄了好久才弄出来的问题,因为一开始对Extjs不熟悉,所以搞了老半天,其实很简单:

    listeners:{
    click(_this, The, rowIndex, e){

    //new 一个colorMenu
      var colorMenu = new Ext.menu.ColorMenu({
      handler: function(cm, color){//选择colorMenu上的一个颜色的时候
        secondGrid.store.getAt(rowIndex).set(_this.dataIndex,color);//把颜色在该cell上进行修改
        }
      });
    colorMenu.showAt(e.getXY());//把colorMenu显示在click时的e的位置上
    }}}

    接着,我们来看第二个问题:

    2.怎么才能让grid的一些行不能编辑呢,其实也是比较简单的。

    listeners:{
      //e表示edit event object,包含:grid,record,field,value,row,column,cancel
      beforeedit:function(e){
        //如果该行是indoor是false的,则不可以编辑
        if(secondGrid.store.getAt(e.row).data['editable']==false){
          return false;
        }
    }}

    这个就是要在grid里面设置listeners,在listeners里面设置beforeedit,然后beforeedit就会根据行的某个条件来return false或者true,false就是不可编辑,true就是可以编辑。

    但是这个edit只是对textField有效,对checkColumn,actionColumn这些不是普通的没有效果,对1.写的colorMenu也没有效果

    3.还有就是怎么设置某些行的背景颜色不一样呢?

    viewConfig:{
      getRowClass:function(record, index, rowParams, store){
        if(record.data['editable']==false){
        return "row-public";
        }
      }
    }

    这里是用viewConfig里的getRowClass,通过返回class,可以改变行的样式,这个必须是返回css样式里的某个class才行

    比如

    .row-public{

      background-color:#ff0000;

    }

    4.说到怎么控制某些行的字体颜色等的不一样,这个我在getRowClass里没有设置成功,我换成在每列根据条件进行renderer来实现。

    if(record.data['editable']==false){
      return "<span style='color:"+noEditorColor+";'>"+value+" </span>";
      }
    else{
      return "<span style='color:black;'>"+value+" </span>"
    }

    这个需要注意的就是要返回一段字符串,然后ExtJs会把这段字符串当成HTML语句显示在该cell里

    5.怎么控制某些行的checkColumn不能点击,这个呢我也是百度了很多,由各种组合起来给的灵感,下面是该checkcolumn的总体设置,某些不必要的元素可以省略

    xtype:'checkcolumn',
    id:'public',
    header:'Public',
    50,
    sortable:true,
    align:'center',
    dataIndex:'public',
    listeners: {
    click: function(col, grid, rowIndex, e){
    if(secondGrid.getStore().getAt(rowIndex).data['editable']== true){
    var value = secondGrid.getStore().getAt(rowIndex).get(col.dataIndex);
    secondGrid.getStore().getAt(rowIndex).set(col.dataIndex, !value);
    }
    }
    },
    renderer:function(value, metaData, record, rowIndex, colIndex, store) {
      metaData.css += ' x-grid3-check-col-td';
      /////////控制某些checkcolumn可以编辑,某些不可以编辑
      if (store.getAt(rowIndex).data['editable']== false&&store.getAt(rowIndex).data['public']==true){
        return "<img src='/modules/projectd/threshold_line/pic/checkNoEdit.gif'>";
      }else if(store.getAt(rowIndex).data['editable']== false&&store.getAt(rowIndex).data['public']==false){
        return "<img src='/modules/projectd/threshold_line/pic/uncheckbox.gif'>";
      }
      else{
        return String.format('<div class="x-grid3-check-col{0}">&#160;</div>', value ? '-on' : '');
      }
    }

    主要呢是在renderer里实现的根据某些条件,返回一些样式

    6.是如何只有一些可以拖拽,一些不可以拖拽

    这个我就是在

    listeners:{
      render:function(){
        new Ext.dd.DropTarget(this.el, {
        ddGroup : 'secondGridDDGroup',
        notifyDrop : function(ddSource, e, data){
        var DefaultRecords = ddSource.dragData.selections;
        var records=new Array();
        //从selectionModel中挑出editable为true的
        for(var i=0;i<DefaultRecords.length;i++){
          if(DefaultRecords[i].data['editable']==true){
            records.push(DefaultRecords[i]);
          }
        }
        if(records.length>0){
          Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
          firstGrid.store.add(records);
        }
          return true
      }
    });
    }

    就是在被拖拽的数据里面把可以拖拽的挑出来。

    以上是我这几天主要解决的一些问题,想到更多的再补。

  • 相关阅读:
    mysql的安装
    一个电脑登录多个微信
    项目工程构建
    MYSQL 添加字段
    Centos 搭建maven私服
    Nacos 动态刷新@RefreshScope
    Cookie & Session
    阿里蚂蚁 笔试题
    springboot 将配置文件中的配置读取为properties配置类
    .Net Gacutil工具(全局程序集缓存工具)使用教程
  • 原文地址:https://www.cnblogs.com/aliceQin/p/4807767.html
Copyright © 2011-2022 走看看