【问题标题】:extJS 4.2 Newbie Q - Loop through Store or GridextJS 4.2 Newbie Q - 循环存储或网格
【发布时间】:2014-01-18 15:41:50
【问题描述】:

更新:我回答了我自己的问题。它可能是和白痴的解决方案,但我不相信框架是白痴证明的。我的问题是我无法为我的商店触发加载事件。我在 init 函数之后,this.control 函数之前添加了以下几行:

    init: function() {

    Ext.getStore('Users').addListener('load',this.onUsersStoreLoad, this);

    Ext.getStore('Users').addListener('datachanged',this. onUsersStoreDataChange, this);

    this.control(
    {


        'viewport > userlist':
        {
            itemdblclick: this.editUser,
        },


        'useredit button[action=save]':
        {
            click: this.updateUser
        }           


    });



},

onUsersStoreLoad: function(me,records,success)
{

// Do something ignorant with your code here
};

这适用于分页网格/商店或其他任何东西。如果这是为我的商店处理加载事件的不好方法,请随时就如何改进提出建议。

谢谢, 更新结束:

看在上帝/国家的份上,我不知道如何在商店或网格中循环。我是新手,虽然我认为最好在商店中循环而不是网格,但我似乎也能找到一种方法。我读过几篇文章,人们似乎有同样的问题并找到了解决方案。但是,当我尝试实施解决方案时,我在登录控制台时收到未定义的错误。显然,我的理解低于标准,因为我无法确定我是否将我的代码放在了正确的位置。

我已在 SO 中使用此链接作为我想要做的事情的模型,但我无法让它工作:

http:/stackoverflow.com/questions/3149107/how-to-loop-through-the-extjs-grid-object-to-get-its-elements-and-values

我想用数组禁用日期选择器中的日期。当我对其进行硬编码时它可以工作,但我真正想做的是使用用户存储提供的网格的 unix_time_stamp 列动态加载 dateArray。我已经在任何我可能做到的地方尝试了消息框中的存根,但我似乎无法让它触发,所以这告诉我我从根本上搞砸了。请帮忙。

查看:

Ext.define('AM.view.user.List' ,{
extend: 'Ext.grid.Panel',
alias: 'widget.userlist',
title: 'All Users',
store: 'Users',
plugins:[Ext.create('Ext.grid.plugin.RowEditing', {clicksToEdit: 1})],
dockedItems: [{ xtype: 'pagingtoolbar',
                store: 'Users',
                dock: 'bottom',
                displayMsg: 'Displaying Records {0} - {1} of {2}',
                displayInfo: true}],


initComponent: function() {

    this.columns = [
                    Ext.create('Ext.grid.RowNumberer',
                        {
                        resizable: true,
                        resizeHandles:'all',
                        align: 'center',
                        minWidth: 35,
                        maxWidth:50
                        }),
                    {
                    header: 'Name',
                    dataIndex: 'message_id',
                    flex: 1,
                    editor:'textfield',
                    allowBlank: false,
                    menuDisabled:true
                    },
                    {
                    header: 'Email',
                    dataIndex: 'recip_email',
                    flex: 1,
                    editor:'textfield',
                    allowBlank: false,
                    menuDisabled:true
                    },
                    {
                    header: 'Date Time',
                    dataIndex: 'unix_time_stamp',
                    width: 120,
                    menuDisabled:true,
                    // submitFormat: 'd/m/Y',
                    renderer: Ext.util.Format.dateRenderer('m/d/Y'),
                    field:{ xtype:'datefield',
                            autoSync:true,
                            allowBlank:false,
                            editor: new Ext.form.DateField(
                                    {format: 'm/d/y'})  }
                    }];



    this.callParent(arguments);


},

});

商店:

Ext.define('AM.store.Users', {
extend: 'Ext.data.Store',
model: 'AM.model.User',
autoLoad: true,
autoSync:true,
pageSize:50,
proxy:
{
    type: 'ajax',
    api:
    {
        read: 'http://192.168.0.103/testit/dao_2.cfc?method=getContent',
        update: 'http://192.168.0.103/testit/dao_2-post.cfc?method=postContent'

    },
    reader:
    {
        type: 'json',
        root: 'data',
        successProperty: 'success',
        totalProperty : 'dataset',
        remoteFilter : true
    },
    listeners:
    {
        // stuff goes here
    }
}

});

视口:

Ext.Loader.setConfig({enabled:true});

// This array is for testing.
dateArray = ["12/14/2013","12/16/2013","12/18/2013","12/20/2013"];

// var disabledDates = [];
// var usersStore = Ext.getStore('User');
// console.log(usersStore);
// usersStore.store.each(function(record){
//  disabledDates.push(record.get(unix_time_stamp));
// });

Ext.应用程序({ 需要:['Ext.container.Viewport'], 名称:“上午”, appFolder: '应用程序', 控制器:['用户'],

launch: function() {

    Ext.create('Ext.container.Viewport', {

    layout: 'border',

     items:
        [
            {

            region: 'center',
            //layout:'fit',
            title:'The Title',
            xtype: 'tabpanel', // TabPanel itself has no title
            activeTab: 0,      // First tab active by default
            items:
            [{
                xtype: 'userlist',
                listeners:
                {
                    select: function(selModel, record, index, options)
                    {
                        // do something with the selected date
                        // Ext.Msg.alert(record.data.message_id, record.data.recip_email +'<br> ' + record.data.unix_time_stamp);
                    }
                }
            }]

            },
            {
            region: 'west',
            layout:'fit',
            xtype: 'tabpanel',
            activetab:0,
            collapsible:false,
            split: false,
            title: 'The Title',

            width:178,
            maxWidth:400,
            height: 100,
            minHeight: 100,
            items:
            [
            {
                title: 'Tab 1',
                xtype:'panel',
                items:
                    [{
                    xtype: 'datepicker',
                    minDate: new Date('12/15/2013'),
                    maxDate: new Date(),
                    // Disable dates is set to invert dates in array
                    // disabledDates:["^(?!"+dateArray.join("|")+").*$"],
                    disabledDates:["^("+dateArray.join("|")+").*$"],

                    handler: function(picker, date)
                            {

                            // do something with the selected date
                            // Ext.Msg.alert('date picker example in init2.js' + '<br>' + Ext.Date.format(date,'m/d/Y'));

                            console.log('date picker example in init2.js' + Ext.Date.format(date,'m/d/Y'));

                            // get store by unique storeId
                            var store = Ext.getStore('Users');

                            // clear current filters
                             store.clearFilter(true);

                            // filter store
                            Ext.encode(store.filter("unix_time_stamp", Ext.Date.format(date,'m/d/Y')));

                            // store.proxy.extraParams = { key:'test'};
                            store.load();
                            // store.sync();

                            }
                    }]
            },
            {
                title: 'Tab 2',
                html: 'ers may be added dynamically  - Others may be added dynamically',
            }

            ]

            }
        ]

    });
}
});

【问题讨论】:

    标签: arrays loops store extjs4.2


    【解决方案1】:
    猜你喜欢
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多