0
Ext.require([
    'Ext.grid.*',
    'Ext.data.*',
    'Ext.panel.*'
]);
Ext.onReady(function(){
    Ext.define('ImageModel', {
        extend: 'Ext.data.Model',
        fields: ['name', 'url', {name:'size', type: 'float'}, {name:'lastmod', type:'date', dateFormat:'timestamp'}]
    });
    var store = Ext.create('Ext.data.JsonStore', {
        model: 'ImageModel',
        proxy: {
            type: 'ajax',
            url: 'get-images.php',
            reader: {
                type: 'json',
                root: 'images'
            }
        }
    });
    store.load();

    var listView = Ext.create('Ext.grid.Panel', {
        width:425,
        height:250,
        collapsible:true,
        title:'Simple ListView <i>(0 items selected)</i>',
        renderTo: Ext.getBody(),

        store: store,
        multiSelect: true,
        viewConfig: {
            emptyText: 'No images to display'
        },

        columns: [{
            text: 'File',
            flex: 50,
            dataIndex: 'name'
        },{
            text: 'Last Modified',
            xtype: 'datecolumn',
            format: 'm-d h:i a',
            flex: 35,
            dataIndex: 'lastmod'
        },{
            text: 'Size',
            dataIndex: 'size',
            tpl: '{size:fileSize}',
            align: 'right',
            flex: 15,
            cls: 'listview-filesize'
        }]
    });

    // little bit of feedback
    listView.on('selectionchange', function(view, nodes){
        var l = nodes.length;
        var s = l != 1 ? 's' : '';
        listView.setTitle('Simple ListView <i>('+l+' item'+s+' selected)</i>');
    });
});

我创建了 2 个面板,一个是左面板,第二个是右面板。
列表视图在左侧面板中创建,右侧面板将读取页面 showimage.php
列表视图显示文件详细信息,当用户选择列表视图时,会将文件名作为参数“ name”传递给 showimage.php,并且右侧面板将按名称显示从列表视图选择事件传递的图像。(实际上名称字段存储文件的 ID)

问题

1)how to create the select list view event,when select a list view passing parameter name to showimage.php,and right panel refresh the page and display the image.

4

1 回答 1

0
//===========================LIST VIEW===============================
    Ext.define('ImageModel', {
        extend: 'Ext.data.Model',
        fields: ['PicID', 'PicUploadedDateTime','PicData']
    });

    var ImgStore = Ext.create('Ext.data.JsonStore', {
        model: 'ImageModel',
        autoLoad: true,
        proxy: {
            type: 'ajax',
            url: 'get-image.php',
            baseParams: {  //here you can define params you want to be sent on each request from this store
                        mainid: 'value1',
                        startdate: 'value2',
                        enddate: 'value3'
                        },
            reader: {
                type: 'json',
                root: 'images'
            }
        }
    });

    var listView = Ext.create('Ext.grid.Panel', {
        region: 'west',
        id : 'imagelist',
        title: 'Select Image',
        width: 200,
        split: true,
        collapsible: true,
        floatable: false,
        title:'Select Image',
        store: ImgStore,
        multiSelect: false,
        viewConfig: {
            emptyText: 'No images to display'
        },

        columns: [
            {
            text: 'Date Time Uploaded',
            //xtype: 'datecolumn',
            //format: 'Y-m-d H:i:s',
            flex: 65,
            width: 100,
            dataIndex: 'PicUploadedDateTime'
        }]
    });

    function hexToBase64(str) {
    return btoa(String.fromCharCode.apply(null, str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" ")));
    }

    listView.on('selectionchange', function(view, nodes){
        /*
        var nodeIdDisplay = "";
        for(var i = 0; i < nodes.length; i++)
        {
            if(nodeIdDisplay.length > 0)
                nodeIdDisplay += ",";
            nodeIdDisplay += nodes[i].get("PicID");
        }
        */
        if (nodes[0].get("PicID") > 0){
            //alert(nodes[0].get("PicData"));
            image=Ext.getCmp('displayimage');
            image.setSrc("data:image/jpeg;base64,"+hexToBase64(nodes[0].get("PicData")));
        //console.log(nodes[0].get("PicData"));
        }
    });

此代码方法发布到 get-image.php,并获取存储中的所有图像,然后,选择更改事件的列表视图获取图像 id 并在type : 'image'组件上显示图像

于 2013-02-19T08:26:00.807 回答