I think you have to set row visible value false before any operation you do. Because some time it will take last change value and generate wrong o/p so set it's value false then do any operation true or false like below :
row.visible = false;
if (row.visible)
{
}
else
{
row.visible = true;
}
Accept as answer and vote if help.