lowben 2010-08-11 10:38
浏览 355
已采纳

extjs关于获取被选取的record的id的问题

一个关于获取record的id 的问题,请看下面删除的函数deleteUser
[code="java"]UserList = Ext.extend(Ext.Panel, {
layout: 'fit',
autoWidth: true,
store: 'UserStore',
initComponent: function() {

    this.items = [
        {
            xtype: 'editorgrid',
            id:'grid_id',
            store: 'UserStore',
            border: false,
            loadMask: true,
            view: new Ext.grid.GridView({forceFit:true}),
            selModel: new Ext.grid.CheckboxSelectionModel({width:20}),
            columns: [new Ext.grid.RowNumberer({width: 30}),
                {
                    xtype: 'gridcolumn',
                    header: '姓名',
                    sortable: true,
                    dataIndex: 'name',
                    width: 100,
                    editor: {xtype: 'textfield'}
                },
                {
                    xtype: 'gridcolumn',
                    header: '电子邮箱',
                    sortable: true,
                    dataIndex: 'email',
                    width: 150,
                     editor: {xtype: 'textfield'}
                },
                {
                    xtype: 'gridcolumn',
                    header: '用户名',
                    sortable: true,
                    dataIndex: 'username',
                    editable:false,
                    width: 100,
                    editor: {xtype: 'textfield'}
                },
                {
                    xtype: 'booleancolumn',
                    dataIndex: 'enable',
                    header: '可用',
                    sortable: true,
                    width: 100,

                    editor: {
                        xtype: 'checkbox',
                        boxLabel: '是否可用'
                    }
                }
            ]
        }
    ];
    this.bbar = {
        xtype: 'paging',
        pageSize: 10,
        store: 'UserStore',

        displayInfo: true,
        displayMsg: '显示第{0}条到{1}条记录,一共{2}条',
        emptyMsg:'没有记录',
        items: [
            {
                xtype: 'button',
                text: '提交更新',
                handler:this.saveUser                       
            }
        ]
    };
    this.tbar = {
        xtype: 'toolbar',
        items: [
            {
                xtype: 'tbfill'
            },
            {
                xtype: 'tbseparator'
            },
            {
                xtype: 'button',
                id: 'deleteUser',
                text: '删除',
                handler:this.deleteUser              

            },
            {
                xtype: 'tbseparator'
            }
        ]
    };

    UserList.superclass.initComponent.call(this);

},

   deleteUser :function() {

var userIds = Ext.getCmp("grid_id").selModel.selections.keys;
   //问题出在这里:我想获取被选取的record的id,但获得的Id值如ext-record-21,ext-record-22....
   // 看网上好多人用var userIds = this.selModel.selections.keys,在这里我不行,所以用getCmp来获取表格对象,可能是这个的问题,但不确定。请高手可以帮忙看一下,谢谢,

     if (userIds.length <= 0) {
        Ext.MessageBox.alert('提示', '请选择要删除的数据');
        return;
    }
    var submitFun = function(buttonId, text, opt) {
        if (buttonId == 'yes') {
            micrite.util.ajaxRequest({
                url: 'DeleteUser.action',
                params:{'userIds':userIds},
                success:function(r,o){
                    //var res = Ext.decode(r.responseText);
                    //if (res && res.success){
                        this.store.reload();
                    //}
                },
                failure:Ext.emptyFn
            },this);
        }
    };
    Ext.Msg.show({
        title:'删除操作',
        msg: '是否删除',
        buttons: Ext.Msg.YESNO,
        scope: this,
        fn: submitFun
        //icon: Ext.MessageBox.QUESTION
    });
},
[/code]
  • 写回答

5条回答 默认 最新

  • gwh_08 2010-08-11 11:20
    关注

    看你的代码应该是一次删除多行:
    首先应取到所选中的行:
    var m = this.grid.getSelections();
    var store = this.ds;
    其次再在ajax中,对所选的行在页面删除,并在后台进行删除操作:
    ......
    var userIds = "";
    for (var i = 0, len = m.length;i < len; i++){
    var ss = m[i].get("grid_id");
    userIds = jsonData + ss + ",";
    store.remove(m[i]);
    }
    ........
    url: 'DeleteUser.action',

    params:{'userIds':userIds},
    ...........
    如果是删除一行,那就直接取即可:
    var userIds = this.grid.getSelections().get("grid_id");

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统