:: Forum >>

cell template refresh

I have a cell template for setting the background color of a cell based on the contents of another cell in that row. I would like the color to change for that cell when the other cell is edited, and here I am stuck.

grid.defineCellProperty("class");
grid.setCellClass(cellClass);
grid.getCellTemplate().setStyle("background-color",function()
{
if (this.getCellProperty("class") == "critical")
{
return "#F95757";
}
});
function cellClass(i,j)
{ .... return newclass; }

In the onCellValidating function I call:

grid.getCellTemplate(1,row).refresh();

but the color does not change to correspond with the new entry. (It shows correctly when I refresh the whole page.)

Any ideas greatly appreciated.
beth
Sunday, March 15, 2009
grid.getCellTemplate(1,row).refresh();

This is the statement that does not seem to have any effect. Does anyone know why? I need to re-paint a cell based on a new grid entry.
beth
Monday, March 16, 2009
did you try render()?
jLH
Tuesday, March 17, 2009
Thanks, but I don't know what that is a method of ... ?
beth
Tuesday, March 17, 2009
Have you tried this?
grid.getCellTemplate().setStyle("background",function()
instead of:
grid.getCellTemplate().setStyle("background-color",function()

Wednesday, March 18, 2009
Thank you for that suggestion ... still same effect tho.

Have to page down and then page up to see the new color. :-(
beth
Wednesday, March 18, 2009
Sorry for suggest to test and fail again, but...
and this one?
getCellTemplate(col,row).getContent('box').refresh();
Wednesday, March 18, 2009
Thanks so much for another suggestion ... this does not refresh either, but I was very hopeful. :-) Is there any resolution? This is happening under IE 7 and IE 6.

Does anything work for anybody, in doing an immediate cell-repaint, called from the onCellValidating function?
beth
Thursday, March 19, 2009
I am still trying for a solution for this. I have a cell template for setting the background color of a cell:

grid.getCellTemplate().setStyle("background",function(){}

My problem is having the cell template refresh when cell contents change. It seems the only way this will happen is with a complete browser refresh. Without that, even when I re-load my data, setCellData to the new array, and refresh the grid, the cell color will not change unless I physically page down till the cell is out of view, and then page back up.

Along with the grid refresh, I've tried:

grid.getCellTemplate(1,row).getContent("box").refresh();

but it does not repaint the cell. Am I missing something? Any ideas very much appreciated.
beth
Thursday, April 16, 2009
Beth,
If I'm not too much mistaken, after reading a few (onCellValidating) posts like:
http://www.activewidgets.com/javascript.forum.15407.2/confused-about-the-purpose-of.html
It seems that templates work the same as reverting values, and must be done using onCellValidated event instead ( just to prevent the editing part already finished).
But, as I am not totally sure ( never tried to refresh templates on validating) I would also give a try to some timeout or even refresh the full row (better than full grid/page).
HTH
Carlos
Thursday, April 16, 2009
Carlos, thank you so much for your help with this. It works! I use

grid.getRowTemplate(row).refresh();

in the onCellValidated event, and it does just what I want, and I don't even have to refresh the full grid. Refreshing the row rather than the cell was important, because the cell template was based on another value in that row, which changed as a result of the edit.

Thank you very VERY much. :-)
beth
Saturday, April 18, 2009

This topic is archived.


Back to support forum

Forum search