博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Ext.Panel编写一个图片列表类
阅读量:5107 次
发布时间:2019-06-13

本文共 3711 字,大约阅读时间需要 12 分钟。

先看效果后上代码

/*
    图片列表视图,可以把图片按图片集合的形式展现
    未来可能发展为一个功能丰富的图片播放管理工具
    <script type="text/javascript" language="javascript" src="/modules/cms/js/pictureview.js"></script>
    eg:
    var pic = new BeidaSoft.CMS.PictureView({
        dataUrl:"somedata.htm"
    })
    layout.C.add(pic)
    传递参数为标准翻页工具条提供的参数如:start、limit等等
    数据格式要求为
    {
        totalCount:100,
        rows:[
            {
                id:"123",
                name:"pic1",
                smallImageSrc:"",
                bigImageSrc:""
            },{
                name:"pic2"
            }
        ]
    }
*/
Ext.namespace('BeidaSoft.CMS');
BeidaSoft.CMS.PictureView = 
function (config) {
    BeidaSoft.CMS.PictureView.superclass.constructor.call(
this,config)
}
Ext.extend(BeidaSoft.CMS.PictureView, Ext.Panel,{
    border:
false,
    layout:"fit",
    pageSize:20,
    dataUrl:"",
    store4Pic:
null,
    initComponent: 
function () {
        
//
数据源
        
var store = 
new Ext.data.JsonStore({
            url: 
this.dataUrl,
            root: 'rows',
            totalProperty: 'totalCount',
            fields: [
                {name: 'id', mapping: 'id'},
                {name: 'name', mapping: 'name'},
                {name: 'smallImageSrc', mapping: 'smallImageSrc'},
                {name: 'bigImageSrc', mapping: 'bigImageSrc'}
            ],
            listeners:{
                beforeload:
function(){
                    
//
alert(1)
                    
//
return false
                },
                load:
function(){
                    
//
alert(2)
                },
                loadexception:
function(misc){
                    
//
不符合reader格式的数据也会引发异常
                    
//
debugger
                    
//
alert(3)
                }
            }
        });
        
this.store4Pic = store
        
        
//
翻页工具条
        
this.bbar = 
new Ext.PagingToolbar({
            pageSize: 
this.pageSize,
            store: 
this.store4Pic,
            displayInfo: 
true,
            emptyMsg: '没有记录'
        });
        
var handler4ClickPic = String.format('Ext.getCmp("{0}").ClickPic("{id}")', 
this.id)
        
var currentObject = String.format('Ext.getCmp("{0}")', 
this.id)
        
var template = [
            '<style>',
                'li {float:left;width:145px;height:140px}',
            '</style>',
            '<ul>',
                '<tpl for=".">',
                    '<li style="height:168px; border: solid 1px #ccc; margin:2px;" class="picture">',
                        '<dl style="text-align:center;">',
                        '<dt>',
                        '<a target="_blank" οnclick=Ext.getCmp("{0}").ClickPic("{id}")>',
                            '<img width="145" height="120" src="{smallImageSrc}" />',
                        '</a>',
                        '</dt>',
                        '<dd style="padding-bottom=0px ;padding-left=0px ;padding-right=0px ;padding-top=0px ;">',
                        '<label style="text-align:center; display:">',
                        '<input type="checkbox" id="{id}" name="{name}" />',
                        "{name}",'</label>',
                        '<br>',
                        '<a target="_blank" οnclick=Ext.getCmp("{0}").Preview("{id}")>',
                            '<img src="/modules/cms/images/预览.bmp" title="预览" />',
                        '</a>',
                        '<a>',
                            '<img src="/modules/cms/images/编辑.bmp" title="编辑" />',
                        '</a>',
                        '<a target="_blank" οnclick=Ext.getCmp("{0}").DeletePic("{id}")>',
                            '<img src="/modules/cms/images/删除.bmp" title="删除" />',
                        '</a>',
                        '</dd>',
                        '</dl>',
                    '</li>',
                '</tpl>',
            '</ul>'
        ].join("")
        template = String.format(template, 
this.id)
            
        
this.tpl4Pic = 
new Ext.XTemplate(template);
        
this.dataview4Pic = 
new Ext.DataView({
            store: 
this.store4Pic,
            tpl: 
this.tpl4Pic,
            
//
因为有的样式是用id写的所以也这么写是不合适的
            
//
id: 'phones',
            itemSelector: 'li.phone',
            overClass: 'phone-hover',
            multiSelect: 
true,
            emptyText: 'No images to display',
            autoScroll:
true
        });
        
this.items = 
this.dataview4Pic;
        BeidaSoft.CMS.PictureView.superclass.initComponent.call(
this);
    },
    
//
设置参数
    SetBaseParams: 
function(params) {
        
//
尚未实现
    },
    
//
整合数据
    LoadData: 
function () {
        
this.store4Pic.load()
    },
    
//
派生类可以重写这些方法来实现特定的逻辑
    
//
预览图片
    Preview:
function(id){
        
//
alert(id)
    },
    
//
点击图片
    ClickPic:
function(id){
        
//
alert(id)
    },
    
//
删除图片
    DeletePic:
function(id){
        
    },
    
//
获取选中的记录
    GetSelections:
function(){
        
var arrRecord = []
        
var body = 
this.body.dom
        
var arrInput = body.getElementsByTagName("input")
        
for(
var i=0; i<arrInput.length; i++){
            
var input = arrInput[i]
            
if(input.checked){
                
var record = 
this.store4Pic.getAt(i)
                arrRecord.push(record)
            }
        }
        
return arrRecord
    },
    
//
渲染
    onRender: 
function (ct,position) {
        BeidaSoft.CMS.PictureView.superclass.onRender.apply(
this,arguments);
        
this.LoadData();
    }
});
Ext.reg("beidasoft.cms.pictureview", BeidaSoft.CMS.PictureView)

转载于:https://www.cnblogs.com/boolean/archive/2012/05/09/2491567.html

你可能感兴趣的文章
嵌入式软件设计第8次实验报告
查看>>
NP难问题求解综述
查看>>
算法和数据结构(三)
查看>>
看一下你在中国属于哪个阶层?
查看>>
在iOS 8中使用UIAlertController
查看>>
js获取ip地址,操作系统,浏览器版本等信息,可兼容
查看>>
Ubuntu下的eclipse安装subclipse遇到没有javahl的问题...(2天解决了)
查看>>
Cadence Allegro 如何关闭铺铜(覆铜)shape的显示和设置shape显示模式–allegro小技巧...
查看>>
Atcoder Grand Contest 004 题解
查看>>
MFC中 给对话框添加背景图片
查看>>
alter database databasename set single_user with rollback IMMEDIATE 不成功问题
查看>>
idea 系列破解
查看>>
Repeater + Resources 列表 [原创][分享]
查看>>
c# Resolve SQlite Concurrency Exception Problem (Using Read-Write Lock)
查看>>
dependency injection
查看>>
WCF揭秘——使用AJAX+WCF服务进行页面开发
查看>>
C#综合揭秘——细说多线程(下)
查看>>
c#运算符 ?
查看>>
ps互补色
查看>>
Silverlight学习笔记(九)-----RenderTransform特效【五种基本变换】及【矩阵变换MatrixTransform】...
查看>>