Ext.js5的小部件表格(23)

view

/**
 * This example shows how to create Widgets in grid columns. Widgets are lightweight
 * components with a simpler lifecycle.
 * 这个例子展示了怎样在表格列中创建小部件。
 */
Ext.define('KitchenSink.view.grid.WidgetGrid', {
    extend: 'Ext.grid.Panel',
    requires: [
        'Ext.grid.column.Action',
        'Ext.ProgressBarWidget',
        'Ext.slider.Widget',
        'Ext.sparkline.*'
    ],
    xtype: 'widget-grid',
    store: 'Widgets',
    collapsible: true,
    height: 350,
    width: 1050,
    title: 'Widget Grid',
    viewConfig: {
        stripeRows: true,
        //enableTextSelection是否启用文本选择
        enableTextSelection: false,
        //标记记录已被修改。True 当单元格被修改时,显示单元格指示器(左上角的红三角)
        markDirty: false
    },
    //是给Grid实现鼠标在行经过时的轨迹效果,鼠标掠过这条数据的时候这条数据高亮显示
    trackMouseOver: false,
    disableSelection: true,

    initComponent: function () {
        var me = this;

        me.columns = [{
            text: 'Button',
            width: 105,
            xtype: 'widgetcolumn',
            dataIndex: 'progress',
            widget: {
                width: 90,
                xtype: 'splitbutton',
                icon: '../shared/icons/fam/feed_add.png',
                handler: function(btn) {
                    var rec = btn.getWidgetRecord();
                    Ext.Msg.alert("Button clicked", "Hey! " + rec.get('name'));
                }
            }
        }, {
            text     : 'Progress',
            xtype    : 'widgetcolumn',
            width    : 120,
            dataIndex: 'progress',
            widget: {
                xtype: 'progressbarwidget',
                //给进度条创建背景,接受两个参数
                //value 0-1之间
                //percent 在0-100之间
                textTpl: [
                    '{percent:number("0")}% done'
                ]
            }
        }, 
        {
            text: 'Run Mode',
            width: 150,
            xtype: 'widgetcolumn',
            widget: {
                xtype: 'combo',
                store: [
                    'Local',
                    'Remote'
                ],
                listeners: {
                    select: function(combo){
                        console.log(combo.getValue() + ' selected');
                    }
                }
            }
        },
        {
            text     : 'Slider',
            xtype    : 'widgetcolumn',
            width    : 120,
            dataIndex: 'progress',
            widget: {
                xtype: 'sliderwidget',
                minValue: 0,
                maxValue: 1,
                 精确到小数点后两位
                decimalPrecision: 2,
                listeners: {
                    change: function(slider, value) {

                        // If the widget has been decorated by the WidgetColumn with context-returning methods
                        // then extract data and update its context record.
                        if (slider.getWidgetRecord) {
                            var rec = slider.getWidgetRecord();
                            if (rec) {
                                rec.set('progress', value);
                            }
                        }
                    }
                }
            }
        }, {
            text: 'Line',
            width: 100,
            dataIndex: 'sequence1',
            xtype: 'widgetcolumn',
            widget: {
                xtype: 'sparklineline',
                tipTpl: 'Value: {y:number("0.00")}'
            }
        }, {
            text: 'Bar',
            width: 100,
            dataIndex: 'sequence2',
            xtype: 'widgetcolumn',
            widget: {
                xtype: 'sparklinebar'
            }
        }, {
            text: 'Discrete',
            width: 100,
            dataIndex: 'sequence3',
            xtype: 'widgetcolumn',
            widget: {
                xtype: 'sparklinediscrete'
            }
        }, {
            text: 'Bullet',
            width: 100,
            dataIndex: 'sequence4',
            xtype: 'widgetcolumn',
            widget: {
                xtype: 'sparklinebullet'
            }
        }, {
            text: 'Pie',
            width: 60,
            dataIndex: 'sequence5',
            xtype: 'widgetcolumn',
            widget: {
                xtype: 'sparklinepie'
            }
        }, {
            text: 'Box',
            width: 100,
            dataIndex: 'sequence6',
            xtype: 'widgetcolumn',
            widget: {
                xtype: 'sparklinebox'
            }
        }, {
            text: 'TriState',
            width: 100,
            dataIndex: 'sequence7',
            xtype: 'widgetcolumn',
            widget: {
                xtype: 'sparklinetristate'
            }
        }];

        me.tbar = [];
        for (var i = 0; i < me.columns.length; i++) {
            me.tbar.push({
                text: me.columns[i].text,
                enableToggle: true,
                pressed: true,
                scope: me,
                toggleHandler: me.onButtonToggle
            });
        }

        me.callParent();
        me.on({
            columnshow: me.onColumnToggle,
            columnhide: me.onColumnToggle
        });
    },

    onButtonToggle: function(btn, pressed) {
        if (this.processing) {
            return;
        }

        this.processing = true;
        var header = this.headerCt.child('[text=' + btn.text + ']');
        header.setVisible(pressed);
        this.processing = false;
    },

    onColumnToggle: function(headerCt, header) {
        if (this.processing) {
            return;
        }
        this.processing = true;
        var btn = this.down('toolbar').child('[text=' + header.text + ']');
        btn.setPressed(header.isVisible());
        this.processing = false;
    }
});

store

Ext.define('KitchenSink.store.Widgets', {
    extend: 'Ext.data.ArrayStore',
    model: 'KitchenSink.model.Widget',
    data: (function() {
        var result = [],
            i,
            generateSequence = function(count, min, max) {
                var j,
                    sequence = [];

                if (count == null) {
                    count = 20;
                }
                if (min == null) {
                    min = -10;
                }
                if (max == null) {
                    max = 10;
                }
                for (j = 0; j < count; j++) {
                    sequence.push(Ext.Number.randomInt(min, max));
                }
                return sequence;
            };

        for (i = 0; i < 8; i++) {
            result.push([i + 1, 'Record ' + (i + 1), Ext.Number.randomInt(0, 100) / 100, generateSequence(), generateSequence(), generateSequence(), generateSequence(20, 1, 10), generateSequence(4, 10, 20), generateSequence(), generateSequence(20, -1, 1)]);
        }
        return result;
    })()
});

model

Ext.define('KitchenSink.model.Widget', {
    extend: 'KitchenSink.model.Base',
    fields: [
       {name: 'name'},
       {name: 'progress', type: 'float'},
       'sequence1',
       'sequence2',
       'sequence3',
       'sequence4',
       'sequence5',
       'sequence6',
       'sequence7'
    ]
});

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Ext.js提供了一个方便的类Ext.Ajax来执行异步HTTP请求,也就是AJAX请求。以下是使用Ext.Ajax的示例代码: ```javascript Ext.Ajax.request({ url: 'your-url', method: 'GET', // HTTP请求方法,可以是'GET'、'POST'等 params: { key1: 'value1', key2: 'value2' }, // 请求参数,可以是对象或字符串 success: function(response, options) { // 请求成功的回调函数 console.log(response.responseText); }, failure: function(response, options) { // 请求失败的回调函数 console.log(response.status); } }); ``` 在上面的代码中,我们使用Ext.Ajax.request方法发起了一个GET请求,请求的URL为'your-url',请求参数为{ key1: 'value1', key2: 'value2' }。请求成功后,会执行success回调函数,打印出响应文本;请求失败后,会执行failure回调函数,打印出响应状态码。 ### 回答2: Ext.js是一个JavaScript框架,用于构建富客户端应用程序。它提供了诸多功能和组件,其中之一就是Ajax(Asynchronous JavaScript and XML)。 通过Ext.js的Ajax组件,我们可以使用JavaScript发送HTTP请求,并获取服务器返回的数据,而无需刷新整个页面。这使得我们能够动态更新页面内容,提升用户体验。 使用Ext.js的Ajax,我们可以通过多种方式发送请求,如GET、POST、PUT等。我们可以指定请求的URL、参数和请求类型。我们还可以设置回调函数,在服务器响应后对返回数据进行处理。这样,我们可以根据服务器的响应结果,动态更新页面上的内容或执行其他操作。 此外,Ext.js的Ajax还提供了强大的错误处理机制。当请求发生错误时,我们可以通过回调函数获知,并进行相应的处理。这使得我们能够更好地处理异常情况,保证应用程序的稳定性和可靠性。 总结来说,Ext.js的Ajax功能为我们提供了一种方便、灵活和强大的方式与服务器进行数据交互。它使得我们可以在客户端页面动态获取和更新数据,提升用户体验,同时也提高了我们开发程序的效率。 ### 回答3: Ext.js 是一个用于构建富客户端应用程序的 JavaScript 框架,它提供了丰富的组件和工具来简化开发流程。其中,AJAX 是 Ext.js 中重要的特性之一。 AJAX(Asynchronous JavaScript and XML)是一种异步通信技术,可以在不重新加载整个页面的情况下向服务器发送请求并获取响应。在 Ext.js 中,我们可以通过使用 Ext.Ajax 类来实现 AJAX 的功能。 通过 Ext.Ajax,我们可以发送 GET、POST、PUT、DELETE 等不同类型的请求,同时也可以设置请求的 URL、参数、请求头等。我们可以使用回调函数来处理服务器返回的数据。当请求成功时,可执行 success 回调函数;当请求失败时,可执行 failure 回调函数。 在 Ext.js 中,AJAX 可以帮助我们实现与后端服务器的数据交互,实现动态数据加载、表单提交、登录认证等功能。通过使用 AJAX,我们可以向服务器发送请求并处理响应,实现前端与后端的数据交互,用户体验更加流畅。 总之,Ext.js 提供的 AJAX 功能使得开发者可以更加方便地通过异步通信方式与后端服务器进行交互,减少页面加载时间,提升用户体验。同时,Ext.js 还提供了其他丰富的功能和组件,使得开发复杂的富客户端应用程序变得更加简单。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值