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