function showRoleDialog() {
    var records = grid.getSelectionModel().getSelections();;
    if(records.length == 0) {
      Ext.MessageBox.alert('错误', '您还没有选中任何用户!');
      return;
    }  
    if(records.length >1) {
        Ext.MessageBox.alert('错误', '您只能选择一个用户!');
        return;
      }  
//    var users = new Array();
//    for(var i = 0; i < records.length; i++) {
//      users.push(records[i].get('username'));
//    }
    var username=records[0].get('username');
    var groupId=records[0].get('groupId');
    if(!userRoleDialog) {
      // lazy initialize the dialog and only create it once
  
      userRoleDialog = new function() {    
    
        var roleType = Ext.data.Record.create([
          {name: 'id', type: 'int'},
          {name: 'rolename', type: 'string'},
          {name: 'groupId', type: 'int'},
          {name: 'isdesc', type: 'int'},
          {name: 'rolecode', type: 'string'}
        ]);
      
        var formProxy=new Ext.data.DWRProxy(roleAction.findRolesByGroup,false);
        var roleFromDs = new Ext.data.Store({
          proxy:formProxy,
          reader: new Ext.data.DwrArrayReader({id:'id'}, roleType)
          });
        var toProxy = new Ext.data.DWRProxy(userRoleAction.findRolesByUser,false);
        var roleToDs = new Ext.data.Store({
          proxy: toProxy,
          reader: new Ext.data.DwrArrayReader({id:'id'}, roleType)
          });  
        
//        var username;   //当前编辑的用户帐号
        var dataReadyFlag = false;  //数据加载完成标记,确保dwr已执行完毕
        
        toProxy.on('loaded', refreshAfterLoad);                                 var itemSelector = new Ext.form.FormPanel({ 
    hideLabels: true,
width:480,
            bodyStyle:'padding:5px 5px 0',
items:[{
xtype:'itemselector',
name:'roleSelector',
//fieldLabel:'权限设置',
                fromStore: roleFromDs,
                toStore: roleToDs,
                valueField: 'rolecode',
                displayField: 'rolename',
msWidth:220,
msHeight:260,
imagePath: '../../js/ext/resources/images',
toLegend:'已授予',
fromLegend:'可用'
}]
});
                        
        var dialog =  new Ext.Window({           
            layout: 'fit',
            pageX: 0,
            pageY: 0,
            width:490,
            height:350,
            resizable: false,
            title: '角色设置',
            //border:false,
            closeAction:'hide',
            plain:true,
            modal: true,
            items: [itemSelector],
            buttons: [{
                text:'保存',
                handler: doSetupRole
            },{
                text: '取消',
                handler: function() {
                  dialog.hide();
                }
            }]            
        });
        
        //数据加载完毕事件,用于刷新控制标记
        function refreshAfterLoad() { 
          //itemSelector.valueChanged(authorityToDs);
          dataReadyFlag = true;
        }
  
        //保存权限设置
        function doSetupRole() {          
          if(dataReadyFlag == false) {
            Ext.MessageBox.alert('错误', '初始数据尚未加载完毕,请稍候!');
            return;
          }
          var values = [];
          var v = Ext.util.Format.trim(itemSelector.getForm().findField('roleSelector').getValue());
          if(v.length > 0) {
            values = values.concat(v.split(','));
          }
          userRoleAction.resetUserRoles(username, values, doSetupRoleResp);
          
          function doSetupRoleResp(ret) {
            Ext.MessageBox.alert('OK', '操作成功');
            dialog.hide();
          }
        }
  
        this.load = function(username,groupId) {
           alert(username+"000000000"+groupId);
          dataReadyFlag = false;
          roleFromDs.removeAll();
          roleToDs.removeAll();
          roleFromDs.load({params:{args:[groupId]}});
          roleToDs.load({params:{args:[username]}});
         // username = username;          
        }
        
        this.show = function() {
          dialog.show();
        }        
      }();
    }
    userRoleDialog.load(username,groupId);    
    userRoleDialog.show();
  }我的这段代码老报缺少对象啊

解决方案 »

  1.   

    这么大段代码上哪去找 既然提示找不到对象就跟进去调试一下js的调试工具也很多怀疑grid有问题
      

  2.   

    你用火狐浏览器Firefox,里面有个错误控制台直接能定位到某具体行!
      

  3.   

    缺少对象有可能两个原因引起,一是缺少逗号,二是变量没有声明直接用。不知道你的userRoleDialog 怎么来的?