+ -
当前位置:首页 → 问答吧 → 关于Toolbar动态添加按钮的问题

关于Toolbar动态添加按钮的问题

时间:2010-05-25

来源:互联网

我想在工具栏动态添加按钮,按钮信息来自后台数据库。
以下代码能通过编译,但并不能成功创建按钮,请问:错在哪里?
JScript code
ToolBar = function() {
    Ext.Ajax.request({
        url: 'rolegroup.aspx',
        params: '',
        method: 'POST',
        success: function(response, options) {
            //alert('success');
            var rsp = Ext.util.JSON.decode(response.responseText);
            var total = rsp.totalProperty;
            //alert(total);
            //alert(rsp.result[0].text);
            var arrays = new Array(total);
            for (var i = 0; i < total; i++) {
                arrays[i] = new Ext.Button({ text: rsp.result[i].text, iconCls: 'icon-home' });
            }
            //alert(arrays.length);
            //alert(arrays[1]['text'] + ',' + arrays[1]['iconCls']);
            var o = { items: arrays };
            //Ext.apply(this, A, o);  //不成功?
            Ext.apply(this, arrays);
        },
        failure: function() {
            Ext.Msg.alert("提示信息", "按钮加载失败,请稍后重试!");
        }
    });

    ToolBar.superclass.constructor.call(this, {
        id: 'tool_bar',
        cls: 'top-toolbar'
    })
};

Ext.extend(ToolBar, Ext.Toolbar);



--------------------
后台返回的Json如下:
"{'totalProperty':'3','result':[{'id': '1','text':'测试1'},{'id':'2','text':'测试2'},{'id':'4','text':'测试3'}]}"
-----------------------
现在的问题是,arrays数组中有三条记录存在。可是以下两行代码:
var o = { items: arrays };
Ext.apply(this, arrays);
并没有将值成功传入items项中。这错在哪里?该如何修改?谢谢!

作者: WSJ741   发布时间: 2010-05-25

该回复于2010-05-27 12:37:51被版主删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#2楼 得分:0回复于:2010-05-25 08:30:05
对这个没有研究过,我只是路过滴......

作者: hqs19821108   发布时间: 2010-05-25

问题解决了!我认为主要是ajax异步原因,
创建toolbar后,后台数据并没有读取。等读取后台数据后,再赋值就晚了。
我改了一下代码如下,就OK了!
JScript code
SetToolButtons = function(tbr) {
    Ext.Ajax.request({
        url: 'rolegroup.aspx',
        params: '',
        method: 'POST',
        success: function(response, options) {
            var rsp = Ext.util.JSON.decode(response.responseText);
            var total = rsp.totalProperty;
            var arrays = new Array(total);
            for (var i = 0; i < total; i++) {
                arrays[i] = new Ext.Toolbar.Button({ text: rsp.result[i].text, iconCls: 'icon-home' });
            }
            tbr.add(arrays);
            tbr.addFill();
            tbr.addButton(
            {
                text: '我的桌面',
                iconCls: 'icon-desktop',
                scope: this
            });
            tbr.addSeparator();
            tbr.addButton([
            {
                text: '重新登录',
                iconCls: 'icon-user'
            },
            {
                text: '退出系统',
                iconCls: 'icon-exit'
            }]);
        },
        failure: function() {
            Ext.Msg.alert("提示信息", "按钮加载失败,请稍后重试!");
        }
    });
};

Ext.onReady(function() {
    Ext.QuickTips.init();
    var toolbar = new Ext.Toolbar({
        id: 'tool_bar',
        cls: 'top-toolbar'
    });
    SetToolButtons(toolbar);
}



希望对大家有帮助!

作者: lw474580248   发布时间: 2010-05-25

呵呵,这种情况在ajax也是比较频繁出现的。

作者: WSJ741   发布时间: 2010-05-25

结贴给分啊,帅哥!

作者: IBM_hoojo   发布时间: 2010-05-25

热门下载

更多