EXTJS4.2 控件之Grid 根据数据源某列数据不同绑定不同的控件setEditor

Grid 根据数据源某列数据不同绑定不同的控件,例如:文本框和下拉框

主要代码写在grid的  plugins: [rowEditing],下面这是定义的rowEditing对象,这里面的要定义成 Ext.grid.plugin.CellEditing而不是Ext.grid.plugin.RowEditing

Ext.getCmp(‘pvn‘).setEditor(form组件);这是给grid的列绑定组件,
pvn是在列中定义的id!

如下:

var rowEditing = Ext.create(‘Ext.grid.plugin.CellEditing‘, {// RowEditing
    clicksToEdit: 2,
    listeners: {
        ‘edit‘: function (e, s) {
            var selectedData = grid_DynaProperty.getSelectionModel().getSelection()[0].data;
            if (selectedData.ValueMethod == "1") {
                Ext.getCmp(‘pvn‘).setEditor(
                    new Ext.form.field.ComboBox({
                        name: ‘PropertyValueName‘,
                        typeAhead: true,
                        store: comboData_DynaPropertyValue,
                        valueField: "PropertyValueName",
                        displayField: "PropertyValueName",
                        queryMode: ‘remote‘, //local remote
                        triggerAction: ‘all‘,
                        lazyRender: true,
                        repeatTriggerClick: true,
                        listeners: {
                            "expand": function (combo, store, index) {
                                var selectedData = grid_DynaProperty.getSelectionModel().getSelection()[0].data;
                                comboData_DynaPropertyValue.load({
                                    params: {
                                        PropertyId: selectedData.PropId,
                                        start: startDynaProperty,
                                        limit: limitDynaProperty
                                    }
                                });
                            }
                        }
                    }));
            } else {
                Ext.getCmp(‘pvn‘).setEditor(new Ext.form.field.Text());
            }
        }
    }
});

如图:1.绑定下拉框

2.绑定文本框

代码如下:

var rowEditing = Ext.create(‘Ext.grid.plugin.CellEditing‘, {// RowEditing
    clicksToEdit: 2,
    listeners: {
        ‘edit‘: function (e, s) {
            var selectedData = grid_DynaProperty.getSelectionModel().getSelection()[0].data;
            if (selectedData.ValueMethod == "1") {
                Ext.getCmp(‘pvn‘).setEditor(
                    new Ext.form.field.ComboBox({
                        name: ‘PropertyValueName‘,
                        typeAhead: true,
                        store: comboData_DynaPropertyValue,
                        valueField: "PropertyValueName",
                        displayField: "PropertyValueName",
                        queryMode: ‘remote‘, //local remote
                        triggerAction: ‘all‘,
                        lazyRender: true,
                        repeatTriggerClick: true,
                        listeners: {
                            "expand": function (combo, store, index) {
                                var selectedData = grid_DynaProperty.getSelectionModel().getSelection()[0].data;
                                comboData_DynaPropertyValue.load({
                                    params: {
                                        PropertyId: selectedData.PropId,
                                        start: startDynaProperty,
                                        limit: limitDynaProperty
                                    }
                                });
                            }
                        }
                    }));
            } else {
                Ext.getCmp(‘pvn‘).setEditor(new Ext.form.field.Text());
            }
        }
    }
});

var grid_DynaProperty = Ext.create(‘Ext.grid.Panel‘, {
    store: store_DynaProperty,
    autoWidth: true,
    aotuHeight: true,
    animCollapse: false,
    enableColumnMove: false,
    enableHdMenu: false,
    loadMask: true,
    loadMask: {
        msg: ‘正在载入数据,请稍候...‘
    },
    viewConfig: {
        forceFit: true,
        stripeRows: true
    },
    forceFit: true, //列表宽度自适应
    stripeRows: true, //斑马线
    autoSizeColumns: true, //根据每一列内容的宽度自适应列的大小
    trackMouseOver: true, //鼠标移动时高亮显示
    selModel: { selType: ‘checkboxmodel‘ }, //选择框
    scroll: true,
    plugins: [rowEditing],
    columns: [{ header: ‘序号‘, xtype: ‘rownumberer‘, align: ‘left‘, width: 50 },
    {
        header: ‘属性‘,
        dataIndex: ‘PropertyName‘,
        width: 200
    }, {
        header: ‘填值方式‘,
        dataIndex: ‘ValueMethod‘,
        width: 200,
        renderer:
            function (v, nv, v1) {
                if (v == "1") {
                    return ‘选择属性值‘;
                } else {
                    return ‘手输属性值‘;
                }
            }
    }, {
        header: ‘属性英文名‘,
        id: ‘PropertyEngName‘,
        dataIndex: ‘PropertyEngName‘,
        width: 200,
        editor: {
            allowBlank: true
        }
    }, {
        header: ‘属性值‘,
        id: ‘pvn‘,
        dataIndex: ‘PropertyValueName‘,
        width: 130,
        editor: { xtype: ‘numberfield‘ }
    }]
});
时间: 2024-11-08 17:23:54

EXTJS4.2 控件之Grid 根据数据源某列数据不同绑定不同的控件setEditor的相关文章

FineUI Grid中WindowField根据列数据决定是否Enalble

前台页面Grid控件中设置OnPreRowDataBound属性,windowFile控件设置ID protected void Grid1_PreRowDataBound(object sender, FineUI.GridPreRowEventArgs e) { InspectionLog log = e.DataItem as InspectionLog;   WindowField winField = Grid1.FindColumn("winField") as Windo

二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan.baidu.com/s/1o6MAKCa 前言:本章介绍除DotNetBar2控件套件之外的另外一些常用控件,包括Grid++Report报表.条形码.Excel导出.图表控件ZedGraph:类似这些控件网上免费开源的太少了,经过一番对比和使用感受最后决定把这几个控件整合到EFW框架中供大家选择使用: 本

可以导入导出到Excel支持多表头多层显示的表格控件Essential Grid

Essential Grid for Windows Forms是一款功能强大的表格控件,很多功能和Excel表格相似,具有15种单元格类型,可以导入导出到Excel,支持多表头,多层显示,合并单元格,插入计算公式,支持LINQ,过滤和分组等. 具体功能: 支持Banner Cells,可以联合背景和邻近的单元格来显示一个背景图像或图片 支持完全自定义单元格样式 支持多个单元格覆盖合并 可以冻结行和列 表格控件支持MS Office 2003, MS Office 2007 和 Vista 样式

WinForm控件复杂数据绑定常用数据源(对Combobox,DataGridView等控件DataSource赋值的多种方法)

开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定. 1) 简单数据绑定 简单的数据绑定是将用户控件的某一个属性绑定至某一个类型实例上的某一属性.采用如下形式进行绑定:引用控件.DataBindings.Add("控件属性", 实例对象, "属性名", true); 2) 复杂数据绑定 复杂的数据绑定是将一个以列表为基础的用户控件(例如:ComboBox.ListBox.ErrorProvider.DataGridView等控件)绑

WPF 将数据源绑定到TreeView控件出现界面卡死的情况

首先来谈一下实现将自定义的类TreeMode绑定到TreeView控件上的一个基本的思路,由于每一个节点都要包含很多自定义的一些属性信息,因此我们需要将该类TreeMode进行封装,TreeView的每一个节点的类型都是TreeMode,我们还定义一些Children属性,Parent属性用于定义当前节点的子节点和父节点,当然还定义了一些常见的Name.ToolTip.ID.IsExpand.IsChecked(主要是在每一个节点前面添加了一个CheckBox)等属性,另外的一些属性就是具体需要

在第三方控件 super Grid 中想要删除选中的行

代码: DialogResult result = MessageBox.Show("确定移除选中词吗?", "移除选中",MessageBoxButtons.YesNo,MessageBoxIcon.Information); if (result == DialogResult.Yes) { SelectedElementCollection grid = SuperGrid.PrimaryGrid.GetSelectedRows(); foreach (Gri

Devexpress中WebChartControl控件柱状统计图的做法(数据为调用存储过程)

//前台控件代码:WebChartControl控件: <%-- 月采购量统计--%> <dxchartsui:WebChartControl ID="WebChartControl1" runat="server" Width="700px" Height="400px" CssClass="chartsui"></dxchartsui:WebChartControl>

WP8__实现ListBox横向滑动及子项绑定图片等控件

<!--实现绑定的图片等信息 ListBox水平滚动--> <Grid> <Grid.Resources> <Style x:Key="horizontalListBoxStyle" TargetType="ListBox"> <Setter Property="ItemsPanel"> <Setter.Value> <ItemsPanelTemplate> &l

未能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配。例如,当以动态方式添加控件时,在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配

信息: 未能加载视图状态.正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配.例如,当以动态方式添加控件时,在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配. 数据源: System.Web 堆栈信息: 在 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 在 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayLis