Ext学习笔记8-数据模型及工具栏菜单栏

本文深入探讨了ExtJS中的数据模型,包括数据记录、数据代理、数据解析器、数据集等内容,并详细介绍了ExtToolbar工具栏、ExtMenu菜单栏的常用元素与方法,提供实例代码演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

19-Ext中的数据模型

ExtJS的数据模型主要包括如下几个部分:

    • 数据记录: Record
      • 数据集合中的一个记录,它存放了数据的定义信息和他们的值
    • 数据代理: Proxy
      • 获取解析器,是ExtJS数据模型获取数据的主要途径
    • 数据解析器: DataReader
      • 数据解析器,负责将代理Proxy读取的数据转换为Record对象并存入Store中
    • 数据集: Store
      • 一个保存数据记录(Record)的集合, 它相当于在客户端存放数据的一张数据表,
        对其中数据的更改会触发特定的事
  • Record 数据记录
    • Ext.data.Record主要配置项及公共属性表

配置项

参数类型

说 明

dataObjectRecord记录对应的一个hash对象
dirtyBoolean表示记录中的数据是否被修改过
idObject在创建记录时产生的唯一表示记录的id
modifiedObject这个对象用于保存记录字段修改前的名称和值,
如果字段没有被修改过,则为null

    • Ext.data.Record 主要方法表

      方法名

      说 明

      Record(Array data, [Object id])记录对象的构造函数,一般不直接用于创建对象,而使用create方法进行创建,
      他们的参数是相同的
      参数说明:  data,  包含字段冥河数据值的数组.
                         id, 这个id应该是唯一的, 如果没有提供则会自动产生一个整型
      beginEdit() : void开始编辑, 当处于编辑模式时将没有事件被转播到它的数据Store对象中
      cancelEdit() : void取消当前编辑操作对记录的所有修改
      commit([Boolean silent]) :void这个方法通常被拥有记录的Ext.dataStore进行调用, 提交从记录被创建以来或
      最近一个提交以来的所有更改
      参数说明: silent, true则不通过Ext.data.Store进行记录更新,默认为false
      copy([String id]) : Record复制记录
      参数说明: id, 新记录的id
      create([Array o]) : function静态方法, 用于产生一个特定记录布局的记录构造函数(具体说明看表格下面)
      endEdit() : void结束编辑, 如果数据被改变则拥有记录的Ext.data.Store将得到通知
      get(String name) : Object得到制定名字的字段
      参数说明: name, 字段名
      getChanges() : Object得到自从记录被创建或最近一次提交更新之后发生更改字段的hash集合
      reject([Boolean silent]) : void这个方法通常被拥有记录的Store进行调用,拒绝从记录被创建或最近一次提交
      更新之后发生的所有更改,字段将被还原到他们的初始值
      参数说明: silent ,true则不通过Ext.data.Store进行更新撤销,默认为false
      set(String name, Object value) : void这只记录中特定名字的字段值
      参数说明: name, 字段名
                        value, 字段值
       
        
        

20-Ext中的工具栏

  • Ext.Toolbar工具栏常用元素表

    工具栏元素名称

    说 明

    Ext.Toolbar.Button可以加入到工具栏中的按钮组件
    Ext.Toolbar.Fill用于充满工具条的空白元素
    Ext.Toolbar.Item基类,为其子类提供工具栏的基本功能支持
    Ext.Toolbar.Separator工具栏分割符
    Ext.Toolbar.SplitButton菜单按钮
    Ext.Toolbar.TextItem文本元素

  • Ext.Toolbar支持的各种工具栏常用方法表

    方法名

    参数类型

    说 明

    addButton()

    Object/Array config添加一个或多个Ext.Toolbar.Button/SplitButton对象
    addElement()Mixed el添加Element元素
    addField()Ext.form.Field添加表单组件
    addFill()添加一个用于充满工具条的空白元素
    addSeparator()添加一个工具栏分割符
    addText()String Text添加一个字符串
    add()Mixed arg1,Mixed arg2,Mixed aetc该方法用于项工具栏中添加元素,它支持一个变长的参数列表,
    可以一次性加入多个工具栏元素

  • Ext.Toolbar.Button主要配置项目表

    配置项

    类 型

    说 明

    handlerFunction一个函数,在按钮被单击之后调用
    iconClsString一个样式类,提供在按钮上显示的图标
    menuMixed参数可以是一个菜单对象或者菜单对象的id, 也可以是一个邮箱的菜单配置对象
    textString按钮上显示的文字
    可能的按钮参数形式如下:
          * 单配置对象: {text : '新建', handler : onButtonClick, iconCls : 'newIcon'}
          * 配置对象数组:[{text : '新建'}, {text : '保存'}]
    示例1:(简单工具栏)
           

Ext.onReady(function(){
  var Toolbar = new Ext.Toolbar({//创建工具栏
   applyTo:'toolbar',
   width:300
  });

  Toolbar.addButton([//向工具栏中添加按钮
   {
    text:'新建',//按钮上显示的文字
    handler:onButtonClick,//点击按钮的处理函数
    iconCls:'newIcon'//在按钮上显示的图标
   },
   {text:'打开',handler:onButtonClick,iconCls:'openIcon'},
   {text:'保存',handler:onButtonClick,iconCls:'saveIcon'}
  ]);

  function onButtonClick(btn){//点击按钮时调用的处理函数
   alert(btn.text);//取得按钮上的文字
  }
 });

示例2:

Ext.onReady(function(){
  var Toolbar = new Ext.Toolbar({//创建工具栏
   applyTo:'toolbar',
   width:400
  });
  Toolbar.addButton([{text:'新建'},{text:'打开'},
         {text:'保存'}]);//加入按钮
  Toolbar.addSeparator() //加入工具栏分隔符
  Toolbar.addField(new Ext.form.TextField({//加入表单元素
   width:50
  }));
  Toolbar.addFill()//加入一个充满工具栏的空白元素
  Toolbar.addElement(Ext.get('a'));//加入一个Element元素
  Toolbar.addSeparator()//加入工具栏分隔符
  Toolbar.addText('静态文本')//加入一个简单字符串
 });

示例3:(调用一次方法加入多个不同的元素)

    • 调用格式
      • add(Mixed arg1, Mixed arg2, Mixed etc)
    • 参数说明:
      • Ext.Toolbar.Button     一个工具栏支持的按钮
      • HtmlElement               任何HTML元素
      • Field                              表单字段
      • String                           字符串
      • '->'                               一个用于重码工具条的空白元素
      • 'separator' or '-'       工具栏分隔符

Ext.onReady(function(){
  Ext.BLANK_IMAGE_URL = '../../extjs2.0/resources/images/default/s.gif';
  var Toolbar = new Ext.Toolbar({//创建工具栏
   applyTo:'toolbar',
   width:400
  });
  Toolbar.add(
   {text:'新建'},{text:'打开'},
   {text:'编辑'},{text:'保存'}, //加入按钮
   '-',                         //加入工具栏分隔符
   new Ext.form.TextField({     //加入表单元素
    width:50
   }),
   '->',                        //加入一个充满工具栏的空白元素
   document.getElementById('a'),//加入一个Element元素
   '-',                         //加入工具栏分隔符
   '静态文本'                   //加入一个简单字符串
  );
 });


21-Ext中的菜单栏

  • Ext.menu.Menu主要配置项目表

    配置项

    参数类型

    说 明

    itemsMixed一个有效菜单项的数组(见下表)
    shadowBoolean/String

    阴影显示方式,
    默认为true即sides方式
    sides方式阴影位置:左右下
    frame方式阴影位置:全
    sdrop方式阴影位置:下右


  • 菜单项主要类型表

    菜单元素名称

    说 明

    Ext.menu.TextItem文本元素
    Ext.menu.Separator菜单分割符
    Ext.menu.CheckItem包含选择框的菜单项,也可以是一个单选组

  • 菜单组件常用方法

    方法名

    参数类型

    说 明

    addElement()Mixed el添加Element元素
    addItem()Ext.menu.Item.item添加一个已存在的菜单项
    addMenuItem()Object.config根据一个菜单项配置对象,添加菜单项
    addSeparator()添加菜单分隔符
    addText()String text添加一个字符串

示例1:

Ext.onReady(function(){
  Ext.BLANK_IMAGE_URL = '../../extjs2.0/resources/images/default/s.gif';
  var Toolbar = new Ext.Toolbar({//创建工具栏
   applyTo:'toolbar',
   width:300
  });
  var fileMenu = new Ext.menu.Menu({//文件创建菜单
   shadow : 'frame',//设置菜单四条边都有阴影
   items : [
    {text: '新建',handler:onMenuItem},//添加菜单项
    {text: '打开',handler:onMenuItem},
    {text: '关闭',handler:onMenuItem}
   ]
  });
  var editMenu = new Ext.menu.Menu({//编辑创建菜单
   shadow : 'drop',//设置菜单在右下两条边有阴影
   items : [
    {text: '复制',handler:onMenuItem},//添加菜单项
    {text: '粘贴',handler:onMenuItem},
    {text: '剪切',handler:onMenuItem}
   ]
  });
  Toolbar.add(
   {text : '文件', menu : fileMenu},//将菜单加入工具栏
   {text : '编辑', menu : editMenu}
  );
  function onMenuItem(item){//菜单项的回调方法
   alert(item.text);//取得菜单项的text属性
  }
 });

示例2:(创建二级或多级菜单)

Ext.onReady(function(){
  Ext.BLANK_IMAGE_URL = '../../extjs2.0/resources/images/default/s.gif';
  var Toolbar = new Ext.Toolbar({//创建工具栏
   applyTo:'toolbar',
   width:300
  });
  var infoMenu = new Ext.menu.Menu({//一级菜单
   items : [
    {
     text: '个人信息',
     menu: new Ext.menu.Menu({//二级菜单
      items:[
       {text: '身高',handler:onMenuItem},
       {text: '体重',handler:onMenuItem},
       {
        text: '生日',
        menu:new Ext.menu.DateMenu({//三级菜单
         handler:onClickDate
        })
       }
      ]
     })
    },//添加菜单项
    {text: '公司信息'}
   ]
  });
  Toolbar.add(
   {text : '设置', menu : infoMenu}//将菜单加入工具栏
  );
  function onClickDate(dm,date){//日期选择的处理函数
   alert(date.format('Y-m-j'));
  }
  function onMenuItem(item){//选择菜单项的处理函数
   alert(item.text);//取得菜单项的text属性
  }
 });

示例3: (使用适配器Ext.menu.Adapter)

Ext.onReady(function(){
  Ext.BLANK_IMAGE_URL = '../../extjs2.0/resources/images/default/s.gif';

  var Toolbar = new Ext.Toolbar({//创建工具栏
   applyTo:'toolbar',
   width:300
  });
  var fileMenu = new Ext.menu.Menu({//文件创建菜单
   items : [
    //使用适配器将按钮加入菜单
    new Ext.menu.Adapter(new Ext.Button({
     text:'新建',
     handler:onButtonClick
    })),
    new Ext.menu.Adapter(new Ext.Button({
     text:'打开',
     handler:onButtonClick
    })),
    new Ext.menu.Adapter(new Ext.Button({
     text:'关闭',
     handler:onButtonClick
    }))
   ]
  });

  Toolbar.add(
   {text : '文件', menu : fileMenu}//将菜单加入工具栏
  );
  function onButtonClick(btn){//菜单项的回调方法
   alert(btn.text);//取得菜单项的text属性
  }
 });

示例4:(具有选择框的菜单)

Ext.onReady(function(){
  Ext.BLANK_IMAGE_URL = '../../extjs2.0/resources/images/default/s.gif';

  var Toolbar = new Ext.Toolbar({//创建工具栏
   applyTo:'toolbar',
   width:300
  });
  var themeMenu = new Ext.menu.Menu({//文件创建菜单
   items : [
   {
    text:'主题颜色',
    menu:new Ext.menu.Menu({
     items:[
      {
       text: '红色主题',
       checked: true,//初始为选中状态
       group: 'theme',//为单选项进行分组
       checkHandler: onItemCheck
      },
      {
       text: '蓝色主题',
       checked: false,//初始为未选中状态
       group: 'theme',
       checkHandler: onItemCheck
      },
      {
       text: '黑色主题',
       checked: false,
       group: 'theme',
       checkHandler: onItemCheck
      }
     ]
    })
   },
   {
    text:'是否启用',
    checked : false
   } 
   ]
  });

  Toolbar.add(
   {text : '风格选择', menu : themeMenu}//将菜单加入工具栏
  );
  function onItemCheck(item){//菜单项的回调方法
   alert(item.text);//取得菜单项的text属性
  }
 });



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐韬科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值