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
Javascript ExtJS:在网格面板中设置行-列的样式_Javascript_Extjs - Fatal编程技术网

Javascript ExtJS:在网格面板中设置行-列的样式

Javascript ExtJS:在网格面板中设置行-列的样式,javascript,extjs,Javascript,Extjs,我希望在单击/选择某行时,将样式应用于网格面板中某行的特定列。 我可以使用rowClick事件捕获上述事件并应用特定于该行的任何样式。但是,当我单击网格中的另一行时,我还希望恢复任何行上应用的样式 我想到的一个想法是为前一行保持某种状态。有没有更简单的方法来实现上述目标。您必须以某种形式维护状态: …您可以初始化变量(selectedRow)以保存当前选定的行,然后在行上调用函数单击以还原当前selectedRow,将selectedRow变量更新为新行,并将样式应用于新的selectedRow

我希望在单击/选择某行时,将样式应用于网格面板中某行的特定列。 我可以使用rowClick事件捕获上述事件并应用特定于该行的任何样式。但是,当我单击网格中的另一行时,我还希望恢复任何行上应用的样式


我想到的一个想法是为前一行保持某种状态。有没有更简单的方法来实现上述目标。

您必须以某种形式维护状态:

…您可以初始化变量(
selectedRow
)以保存当前选定的行,然后在行上调用函数单击以还原当前
selectedRow
,将
selectedRow
变量更新为新行,并将样式应用于新的
selectedRow

您可以使用
行取消选择
事件删除应用的样式。如果在选择行时应用样式,则在取消选择行时很可能要将其删除

如果设置了
SelectionModel
singleSelect
属性,则当选择第二行时,第一行将触发
rowdelect
事件

另一个解决方案:

onRowSelect : function(sm, rowIndex, record){
    if(sm._prevSelectedRow){
        var prevRow = mygrid.getView().getRow(sm._prevSelectedRow);
        //remove style from prevRow
    }
    //Do your stuff

    sm._prevSelectedRow = rowIndex
}

使用网格的itemClick事件,并使用event参数,可以直接访问单元格

fnYourItemClick: function (this, record, item, index, e, eOpts) {

    //Here you go the fancy code to update your cell
    var theCell = Ext.get(e.target);
    theCell.removeCls('<Your Old CSS Class Name>');
    theCell.addCls('<Your New CSS Class Name>');

    //Here you go the fancy code to update entire selected row of the grid
    var theRow = Ext.get(e.target).parent('tr');
    if(theRow.hasCls('<Your Old CSS Class Name>')){
        theRow.removeCls('<Your Old CSS Class Name>');
        theRow.addCls('<Your New CSS Class Name>');
    }

}
fnYourItemClick:函数(this,record,item,index,e,eOpts){
//这是更新手机的花式代码
var theCell=Ext.get(e.target);
细胞移除(“”);
单元格添加CLS(“”);
//下面是更新整个选定网格行的奇特代码
var theRow=Ext.get(e.target).parent('tr');
如果(下面的hasCls(“”)){
theRow.Removecs(“”);
下面添加cls(“”);
}
}

它是一个一次只能选择一行的网格吗?是否要在选择另一行时删除应用的样式,还是删除当前行的选择?