【转】store.getById() 使用

本文详细介绍了ExtJS框架中Store与Record的关系,特别是如何通过设置ID来确保store.getById()能够正确获取到Record。文章提供了具体的代码示例,解释了在创建Record时指定ID的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

store.getById()要能成功得到record,需要有两个条件:
1、store的config Options中设置了id属性
2、创建record是要说明id属性
后者是时常被遗漏的要注意

API 写道
Record( Array data, [Object id] )
This constructor should not be used to create Record objects. Instead, use the constructor generated by create. The parameters are the same.
Parameters:
data : Array
An associative Array of data values keyed by the field name.
id : Object
(Optional) The id of the Record. This id should be unique, and is used by the Ext.data.Store object which owns the Record to index its collection of Records. If not specified an integer id is generated.

 

 

例子

Ext.BLANK_IMAGE_URL = '../resources/images/default/s.gif';    
Ext.QuickTips.init();   
Ext.form.Field.prototype.msgTarget = 'side';   
/*sequece*/  
var id=0;   
/**屏蔽系统右键菜单*/  
Util.forbidContextMenu();    
Ext.onReady(function(){   
    var sm=new Ext.grid.CheckboxSelectionModel({});   
    var cm=new Ext.grid.ColumnModel([   
        sm,   
        {   
            header:"URL",   
            sortable:true,   
            dataIndex:'url',   
            editor:new Ext.form.TextField({   
                vtype:"url",   
                allowBlank:false  
            })   
        },   
        {      
            header:'删除',   
            renderer:delRender,   
            sortable:false,   
            menuDisabled:true,   
            dataIndex:'id'  
        }   
    ]);   
    var ds=new Ext.data.JsonStore({   
        data:{data:[],number:0},   
        root:'data',   
        storeId:"strBlackUrl",   
        id:"id",   
        totalProperty: 'number',   
        fields:['id','url']   
    });   
  
    var grid=new Ext.grid.EditorGridPanel({   
        sm:sm,   
        cm:cm,   
        ds:ds,   
        title:'黑名单网址列表',   
        tbar:[   
            '->',   
            btnFactory('add'),   
            '-',   
            btnFactory('del'),   
            '-',   
            {   
                text:'保存',   
                cls:'x-btn-text-icon',   
                icon:'../images/backup.gif',   
                handler:saveHandler   
            }   
        ]   
    });   
  
    var viewport=new Ext.Viewport({   
        layout:'fit',   
        id:'viewport',   
        items:[   
            grid   
        ]   
    });   
})   
BlackUrl=Ext.data.Record.create([   
    {name:"url",mapping:"url"},   
    {name:"id",mapping:"id",id:true}   
]);   
function addHandler()   
{   
    var record=new BlackUrl({url:"http://www.test.com",id:id},id);   
    id++;   
    Ext.StoreMgr.lookup("strBlackUrl").add(record);   
}   
function delHandler(id)   
{   
    var store=Ext.StoreMgr.lookup("strBlackUrl");   
    var record=store.getById(id);   
    store.remove(record);   
}   
function saveHandler()   
{   
       
}  

 

若没有提供第二个可选参数var record=new BlackUrl({url:"http://www.test.com",id:id},id);
函数delHandler(id)中的store。getById()就会报错
 。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值