extjs GridPanel怎么添加ComboBox,TextField等form控件?

效果图就这样,描述:选择复选框就说明必须填写相关内容,这里面的处理单位是一张表,然后根据处理单位的id查询出此单位下的所有人员,并显示到ComboBox中,后面填写的内容... 效果图就这样,描述:选择复选框就说明必须填写相关内容,这里面的处理单位是一张表,然后根据处理单位的id查询出此单位下的所有人员,并显示到ComboBox中,后面填写的内容必须在复选框选中的时候才验证是否必须填写。我的思路是循环构造每一个ColumnModel中的列,然后再显示到GridPanel中。如果有更好的解决思路或办法也可以提供,如果采纳,我继续加分! 展开
 我来答
陈小羽66
2011-05-04 · TA获得超过151个赞
知道答主
回答量:134
采纳率:66%
帮助的人:20.4万
展开全部

就是用extjs键表格。。。   用grid吧。。给你个例子

Ext.onReady(function(){

    /**

     * Handler specified for the 'Available' column renderer

     * @param {Object} value

     */

    function formatDate(value){

        return value ? value.dateFormat('M d, Y') : '';

    }

    // shorthand alias

    var fm = Ext.form;

    // the column model has information about grid columns

    // dataIndex maps the column to the specific data field in

    // the data store (created below)

    var cm = new Ext.grid.ColumnModel({

        // specify any defaults for each column

        defaults: {

            sortable: true // columns are not sortable by default           

        },

        columns: [{

            id: 'common',

            header: 'Common Name',

            dataIndex: 'common',

            width: 220,

            // use shorthand alias defined above

            editor: new fm.TextField({

                allowBlank: false

            })

        }, {

            header: 'Light',

            dataIndex: 'light',

            width: 130,

            editor: new fm.ComboBox({

                typeAhead: true,

                triggerAction: 'all',

                // transform the data already specified in html

                transform: 'light',

                lazyRender: true,

                listClass: 'x-combo-list-small'

            })

        }, {

            header: 'Price',

            dataIndex: 'price',

            width: 70,

            align: 'right',

            renderer: 'usMoney',

            editor: new fm.NumberField({

                allowBlank: false,

                allowNegative: false,

                maxValue: 100000

            })

        }, {

            header: 'Available',

            dataIndex: 'availDate',

            width: 95,

            renderer: formatDate,

            editor: new fm.DateField({

                format: 'm/d/y',

                minValue: '01/01/06',

                disabledDays: [0, 6],

                disabledDaysText: 'Plants are not available on the weekends'

            })

        }, {

            xtype: 'checkcolumn',

            header: 'Indoor?',

            dataIndex: 'indoor',

            width: 55

        }]

    });

    // create the Data Store

    var store = new Ext.data.Store({

        // destroy the store if the grid is destroyed

        autoDestroy: true,

        // load remote data using HTTP

        url: 'plants.xml',

        // specify a XmlReader (coincides with the XML format of the returned data)

        reader: new Ext.data.XmlReader({

            // records will have a 'plant' tag

            record: 'plant',

            // use an Array of field definition objects to implicitly create a Record constructor

            fields: [

                // the 'name' below matches the tag name to read, except 'availDate'

                // which is mapped to the tag 'availability'

                {name: 'common', type: 'string'},

                {name: 'botanical', type: 'string'},

                {name: 'light'},

                {name: 'price', type: 'float'},             

                // dates can be automatically converted by specifying dateFormat

                {name: 'availDate', mapping: 'availability', type: 'date', dateFormat: 'm/d/Y'},

                {name: 'indoor', type: 'bool'}

            ]

        }),

        sortInfo: {field:'common', direction:'ASC'}

    });

    // create the editor grid

    var grid = new Ext.grid.EditorGridPanel({

        store: store,

        cm: cm,

        renderTo: 'editor-grid',

        width: 600,

        height: 300,

        autoExpandColumn: 'common', // column with this id will be expanded

        title: 'Edit Plants?',

        frame: true,

        clicksToEdit: 1,

        tbar: [{

            text: 'Add Plant',

            handler : function(){

                // access the Record constructor through the grid's store

                var Plant = grid.getStore().recordType;

                var p = new Plant({

                    common: 'New Plant 1',

                    light: 'Mostly Shade',

                    price: 0,

                    availDate: (new Date()).clearTime(),

                    indoor: false

                });

                grid.stopEditing();

                store.insert(0, p);

                grid.startEditing(0, 0);

            }

        }]

    });

    // manually trigger the data store load

    store.load({

        // store loading is asynchronous, use a load listener or callback to handle results

        callback: function(){

            Ext.Msg.show({

                title: 'Store Load Callback',

                msg: 'store was loaded, data available for processing',

                modal: false,

                icon: Ext.Msg.INFO,

                buttons: Ext.Msg.OK

            });

        }

    });

});

参考资料: extjs3.3

业凡巧nl
2011-05-01
知道答主
回答量:22
采纳率:0%
帮助的人:20.8万
展开全部
没听懂!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式