:: Forum >> Version 2 >>

Data in all added rows is same

More information on this topic is available in the documentation section: /aw.ui.grid/addrow.html.

I am evaluating grid control. I need to populate rows in the grid dynamically. Initially I developed a sample and it is working fine. Same code (with some necessary modifications) I inserted in main project and it is giving me a problem. When I add a new row using "addRow" method, it does not get populated in grid control. "addRow" method is called in loop to fill grid completely. When loop is executed 5 - 6 times, 5 - 6 entries are added to grid at a time. When loop move forward after this, after each row added, data in all above rows becomes same as that in newly added row.

I was facing same problem while developing sample application. But I modified some code and the problem was solved. I donot remember now, what modification I was done.

Can anyone please help me solving this ?

My code is as follow :-

var objGrid = new AW.UI.Grid;
var dataRowArray = new Array();
var colnames = new Array(20);
var columnCount;

//ATTACH EVENTS TO OBJECT
objGrid.onRowAdded = function(row){setRowData(this);};

//FUNCTION DEFINITIONS
function initGridControl()
{
var num = new AW.Formats.Number;
num.setTextFormat("#,###.");
dataRowArray = new Array(columnCount);
//colnames = new Array(columnCount);

objGrid.setSize(850, 300);
objGrid.setId("Worklistview");
objGrid.setHeaderText(colnames);
objGrid.setCellFormat(num, 2);
objGrid.setColumnCount(columnCount);
objGrid.setRowCount(0);
objGrid.setRowHeight(25);
objGrid.setCellEditable(false);

//Set selecter column
objGrid.setSelectorVisible(false);
objGrid.setSelectorText("*");
objGrid.setSelectorWidth(28);
objGrid.setHeaderHeight(20);

//objGrid.setSelectionMode(true);
objGrid.setSelectionMode("single-row");
document.write(objGrid); //Display object on browser
objGrid.refresh();
}

function addRecord(recordData)
{
dataRowArray = recordData;
objGrid.addRow(objGrid.getRowCount());
}

function setRowData(newRowHandle)
{
try
{
//newRowHandle.setCellData(dataRowArray);
//newRowHandle.setCellText(dataRowArray, objGrid.getRowCount() - 1, newRowHandle);
newRowHandle.setCellText(dataRowArray, objGrid.getRowCount() - 1);
}
catch(e)
{
alert('Error : ' + e.description);
}
}
Amit Joshi
Tuesday, January 29, 2008
I am evaluating grid control. I need to populate rows in the grid dynamically. Initially I developed a sample and it is working fine. Same code (with some necessary modifications) I inserted in main project and it is giving me a problem. When I add a new row using "addRow" method, it does not get populated in grid control. "addRow" method is called in loop to fill grid completely. When loop is executed 5 - 6 times, 5 - 6 entries are added to grid at a time. When loop move forward after this, after each row added, data in all above rows becomes same as that in newly added row.

I was facing same problem while developing sample application. But I modified some code and the problem was solved. I donot remember now, what modification I was done.

Can anyone please help me solving this ?

My code is as follow :-

var objGrid = new AW.UI.Grid;
var 
dataRowArray = new Array();
var 
colnames = new Array(20);
var 
columnCount;

//ATTACH EVENTS TO OBJECT
objGrid.onRowAdded = function(row){setRowData(this);};

//FUNCTION DEFINITIONS
function initGridControl()
{
var 
num = new AW.Formats.Number;
num.setTextFormat("#,###.");
dataRowArray = new Array(columnCount);
//colnames = new Array(columnCount);

objGrid.setSize(850300);
objGrid.setId("Worklistview");
objGrid.setHeaderText(colnames);
objGrid.setCellFormat(num2);
objGrid.setColumnCount(columnCount);
objGrid.setRowCount(0);
objGrid.setRowHeight(25);
objGrid.setCellEditable(false);

//Set selecter column
objGrid.setSelectorVisible(false);
objGrid.setSelectorText("*");
objGrid.setSelectorWidth(28);
objGrid.setHeaderHeight(20);

//objGrid.setSelectionMode(true);
objGrid.setSelectionMode("single-row");
document.write(objGrid); //Display object on browser
objGrid.refresh();
}

function 
addRecord(recordData)
{
dataRowArray recordData;
objGrid.addRow(objGrid.getRowCount());
}

function 
setRowData(newRowHandle)
{
try
{
//newRowHandle.setCellData(dataRowArray);
//newRowHandle.setCellText(dataRowArray, objGrid.getRowCount() - 1, newRowHandle);
newRowHandle.setCellText(dataRowArrayobjGrid.getRowCount() - 1);
}
catch(e)
{
alert('Error : ' e.description);
}
}
 
Amit Joshi
Tuesday, January 29, 2008
My application need to add records in grid from database table.
To do so, I run through a loop and add one record in each iteration.
If I add records in such iterations, and sort the column by clicking on column header, above situation could be recreated.

PLEASE PROVIDE ME THE SOLUTION SOON

var objGrid = new AW.UI.Grid;
var 
dataRowArray = new Array();

//ATTACH EVENTS TO OBJECT
objGrid.onRowAdded = function(row){setRowData(this);};

//FUNCTION DEFINITIONS
function initGridControl()
{
    var 
FORMAT_NUMBER = new AW.Formats.Number;
    var 
FORMAT_STRING = new AW.Formats.String;
    var 
FORMAT_DATE = new AW.Formats.Date;
    var 
headerRowArray = ["Rank""Country""Internet users""Data from""Extension"];
    
    
FORMAT_NUMBER.setTextFormat("#,###.##");
    
FORMAT_DATE.setDataFormat("ISO8601");
    
FORMAT_DATE.setTextFormat("dd-MMM-yyyy");
    
    
objGrid.setSize(850550);
    
objGrid.setId("workList");
    
objGrid.setHeaderText(headerRowArray);
    
objGrid.setCellFormat(FORMAT_NUMBER2);
    
objGrid.setColumnCount(5);
    
objGrid.setRowCount(0);
    
objGrid.setRowHeight(25);
    
objGrid.setCellEditable(false);
    
    
//Set selecter column
    
objGrid.setSelectorVisible(false);
    
objGrid.setSelectorText("*");
    
objGrid.setSelectorWidth(28);
    
objGrid.setHeaderHeight(20);
    
    
//objGrid.setSelectionMode(true);
    
objGrid.setSelectionMode("single-row");
    
document.write(objGrid); //Display object on browser
    
objGrid.refresh();
}

function 
addRecordsDynamic()
{
    for(var 
1<= 10i++)
    {
        for(var 
1<= 5j++)
        {
            
dataRowArray[j-1] = "Cell_" "-" j;
        }
        
//alert(dataRowArray);
        
objGrid.addRow(objGrid.getRowCount());
    }
}

function 
setRowData(newRowHandle)
{
    
try
    
{
        
newRowHandle.setSelectedRows(objGrid.getRowCount() - 1);
        
newRowHandle.setCellText(dataRowArrayobjGrid.getRowCount() - 1);
    }
    
catch(e)
    {
        
alert('Error : ' e.description);
    }
}
 
Amit Joshi
Tuesday, January 29, 2008
The grid does not create a copy of the data but just keeps reference to the data array. Because you are using the same array object for all rows - all rows display the same data.
Alex (ActiveWidgets)
Tuesday, January 29, 2008



This topic is archived.

Back to /aw.ui.grid/addrow.html

Documentation:

Forum search