zoukankan      html  css  js  c++  java
  • extjs 3.4 store的分类与使用

    据目前所知:Store至少可分为两类,一个是SimpleStore,另一个是JsonStore。 

     

    1,用在gridPanel中常使用SimpleStore 

    var store_stat = new Ext.data.SimpleStore({ 
                fields:[
                {name:'date',mapping:'date'}
                ,{name:'model',mapping:'model'}
                ,{name:'per',mapping:'per'}
                ]
            });
    

    2,填充表单中的下拉菜单(combo),常用JsonStore。 
    (1)简单JsonStore 

     1              var data = [
     2                        { 'id': 1, 'name': '小王', 'sex': '男' },
     3                        { 'id': 2, 'name': '小李', 'sex': '男' },
     4                        { 'id': 3, 'name': '小兰', 'sex': '女' }
     5              ];
     6 
     7             var store = new Ext.data.JsonStore({
     8                 data: data,
     9                 fields: ['id', 'name', 'sex']
    10             });
    11             
    12             var panel = new Ext.Panel({
    13                  500,
    14                 height: 130,
    15                 modal: true,
    16                 collapsible: true,
    17                 closeAction: 'hide',
    18                 layout: 'fit',
    19                 region: 'north',
    20                 title: '查找信息',
    21                 items: [{
    22                     layout: "form",
    23                     frame: true,
    24                     xtype: "form",
    25                     id: "searchForm",
    26                     autoScroll: true,
    27                     items: [{
    28                         fieldLabel: "名称",
    29                          350,
    30                         xtype: 'textfield',
    31                         name: "SearchCode",
    32                         labelStyle: "text-align:center; "
    33                     }, {
    34                         fieldLabel: "Type",
    35                          350,
    36                         mode: 'local', //定义本地数据,默认是远程
    37                         store: store,  //绑定数据源
    38                         xtype: 'combo',
    39                         name: "Type",
    40                         id: "_Type",
    41                         typeAhead: true,
    42                         triggerAction: 'all',
    43                         editable: false,
    44                         labelStyle: "text-align:center; ",
    45                         valueField: 'id',      //值列
    46                         displayField: 'name',  //显示列
    47                         hiddenName: 'Type',    //后台判断参数
    48                         selectOnFocus: true,
    49                         emptyText: '请选择'
    50                     }],
    51                     buttonAlign: 'right',
    52                     fbar: [{
    53                         text: '查找',
    54                         handler: function () {
    55 
    56                         }
    57                     }]
    58                 }]
    59             });
    60
    61 panel.render(document.body);

    PS:combo的使用方法可看:http://www.cnblogs.com/hannover/archive/2011/01/27/1945928.html

    批注:当时静态数据时,fields可以是['id','name','sex'], 

    如果是通过url动态获取数据是,必须是fields:[{name:'id'},{name:'suit'},{name:'type'}] 

    (2)通过url获取数据 

     1         //定义数据存储器store
     2         var store = new Ext.data.Store({
     3             proxy: new Ext.data.HttpProxy //定义读取数据的接口
     4             ({
     5                 url: ActionPageUrl + '?action=GetData'
     6             }),
     7             reader: new Ext.data.JsonReader //读取的后台数据存储到记录集results
     8             ({
     9                 root: 'data',
    10                 totalProperty: 'totalCount'
    11             },
    12             ['Id', 'Name'])
    13         });
    14         //加载数据
    15         store.load({
    16             params: {
    17                 start: 0,
    18                 limit: 20
    19             }
    20         });

     

    注:先后顺序不能颠倒。先JsonStore,后ComboBox。 

    (3)高级用法对比 

    //用法一
    var jsonStore = new Ext.data.JsonStore({
        url: 'api/fail_parts_bydepart.php',
        listeners:{
           'loadexception' : function(e){
            alert(e.toString());
            }
        },
        fields: [
        {name: 'name'},
        {name: 'flash'},
        {name: 'percent'}
            
        ]
    });
    
    
    jsonStore.load({
        params:{
            'level'    : level,
            'department' : paras.department,
            'product': paras.product,
            'target': is_one,
            'suit':paras.suit,
            'model':paras.model,
            'part':paras.part,
            'dateStr':dateStr
        }
    });
    
    //用法二
    var store = {
        'department' : new Ext.data.JsonStore({
            url: 'api/list_k.php?action=department',
            fields: ['name']}), 
        'product' : new Ext.data.JsonStore({
            url: 'api/list_k.php?action=product',
            fields: ['name']})
    };
    
    store.product.baseParams = {'department' : encodeURIComponent(data.data.name)};
    store.product.load();
    
    
    detailStore.on('beforeload', function() {
      detailStore.baseParams = {
      
      };
    });

    JS中encodeURIComponent函数用php解码 
    在JS中使用了encodeURIComponent对中文进行编码在PHP中使用iconv('UTF-8','gb2312',$q);就可以得到你需要的字串了

     

     

  • 相关阅读:
    Django Model数据访问Making queries
    Tomcat 7源码学习笔记 -5 web app自动reload
    tomcat启动提示server.xml的context节点中不支持source属性警告的解决方法
    javaweb学习总结(三十九)——数据库连接池
    共享文件系统
    高可用+负载均衡 方案
    Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨
    Java对象序列化给分布式计算带来的方便
    JAVABEAN必须继承序列化借口的作用
    keep-alive pipeline区别
  • 原文地址:https://www.cnblogs.com/280850911/p/2631969.html
Copyright © 2011-2022 走看看