Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EXTJS4:比较GridPanel中的两个字段_Extjs_Grid_Extjs4_Extjs4.1_Extjs4.2 - Fatal编程技术网

EXTJS4:比较GridPanel中的两个字段

EXTJS4:比较GridPanel中的两个字段,extjs,grid,extjs4,extjs4.1,extjs4.2,Extjs,Grid,Extjs4,Extjs4.1,Extjs4.2,我有一个带有几列的网格面板。 现在,我想在一行的列中设置一个新类,当值彼此不匹配时。 但是我如何才能成功地访问另一行中的列呢? 她是我试过的代码,但上面写着,ID未定义: ...{ header: 'CRS', dataIndex: 'crs', id:'crs', flex:1, renderer: function(value, meta) { console.log("csv-->"+Ext.getCmp('csv').v

我有一个带有几列的网格面板。 现在,我想在一行的列中设置一个新类,当值彼此不匹配时。 但是我如何才能成功地访问另一行中的列呢? 她是我试过的代码,但上面写着,ID未定义:

...{
    header: 'CRS',  
    dataIndex: 'crs',
    id:'crs',
    flex:1,
    renderer: function(value, meta) {

        console.log("csv-->"+Ext.getCmp('csv').value);

        if(value==Ext.getCmp('csv').value)
            {
                //change class
            }

    }
},
{
    header: 'CSV', 
    dataIndex: 'csv',
    id:'csv',
    flex:1
},...

您发布的代码似乎与您要求的代码不匹配。根据您的代码,您似乎正在尝试比较同一行中不同列的值,而不是不同行中的值。那是哪一个呢

无论如何,假设您的代码表示您想要的内容,请务必查看渲染器的文档:

传递给renderer方法的参数之一是“record”,它将包含填充整行值的记录的所有值。如果要跨列比较值,可以执行以下操作:

if( value==record.get( 'csv ') ) { 
    ...do something here... 
}
如果您确实需要跨行比较值,那么“存储”也会作为参数之一传递给渲染器,因此您可以通过这种方式将值与特定行值进行比较


或者,您可以在模型本身中完成大部分工作。如果只是比较同一行中的列,则可以在模型中创建一个附加字段来存储比较结果。如果这样做,渲染器需要做的只是打开新字段的值,而不是进行整个比较和渲染。

您发布的代码似乎与您要求的不匹配。根据您的代码,您似乎正在尝试比较同一行中不同列的值,而不是不同行中的值。那是哪一个呢

无论如何,假设您的代码表示您想要的内容,请务必查看渲染器的文档:

传递给renderer方法的参数之一是“record”,它将包含填充整行值的记录的所有值。如果要跨列比较值,可以执行以下操作:

if( value==record.get( 'csv ') ) { 
    ...do something here... 
}
如果您确实需要跨行比较值,那么“存储”也会作为参数之一传递给渲染器,因此您可以通过这种方式将值与特定行值进行比较


或者,您可以在模型本身中完成大部分工作。如果只是比较同一行中的列,则可以在模型中创建一个附加字段来存储比较结果。如果这样做了,渲染器需要做的就是打开新字段的值,而不是进行整个比较和渲染。

我有它!这对我很有用:

{
    header: 'CSV', 
    dataIndex: 'csv',
    flex:1,
    renderer: function(grid, rowIndex, rowdata) {
        var csv_data=rowdata.data.csv;
        var crs_data=rowdata.data.crs;
        if (csv_data != crs_data) { 
           rowIndex.tdCls = "red-class";
        } 
            return csv_data;

    }
},

我知道了!这对我很有用:

{
    header: 'CSV', 
    dataIndex: 'csv',
    flex:1,
    renderer: function(grid, rowIndex, rowdata) {
        var csv_data=rowdata.data.csv;
        var crs_data=rowdata.data.crs;
        if (csv_data != crs_data) { 
           rowIndex.tdCls = "red-class";
        } 
            return csv_data;

    }
},
为ExtJS 4重写时,可以在dataIndex中设置值时使用该值,因为这是一条记录,所以建议使用get方法获取该值

请注意,渲染器上还有很多属性,您可以在此处找到完整列表:

为ExtJS 4重写时,可以在dataIndex中设置值时使用该值,因为这是一条记录,所以建议使用get方法获取该值

请注意,渲染器上还有很多属性,您可以在此处找到完整列表:

你说得对,对不起,我想比较同一行中的值!看我的新作品!谢谢你的帮助!你是对的,对不起,我想比较同一行中的值!看我的新作品!谢谢你的帮助!很高兴它能工作,但我建议另外两件事:1)在渲染器中传递所有参数……你永远不知道什么时候需要它们,其他查看你的代码的开发人员了解所有可用的参数对他们来说都是很好的。2.)使用API方法--record.get(fieldName)--从记录中获取数据(参数应该是“record”而不是“rowdata”,因为传递的对象是完整的Ext.data.Model实例)。祝你好运。很高兴它能工作,但我建议另外两件事:1)在渲染器中传递所有参数……你永远不知道什么时候需要它们,其他查看你的代码的开发人员了解所有可用的参数也是件好事。2.)使用API方法--record.get(fieldName)--从记录中获取数据(参数应该是“record”而不是“rowdata”,因为传递的对象是完整的Ext.data.Model实例)。祝你好运