:: 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(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
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(850, 550);
objGrid.setId("workList");
objGrid.setHeaderText(headerRowArray);
objGrid.setCellFormat(FORMAT_NUMBER, 2);
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 i = 1; i <= 10; i++)
{
for(var j = 1; j <= 5; j++)
{
dataRowArray[j-1] = "Cell_" + i + "-" + j;
}
//alert(dataRowArray);
objGrid.addRow(objGrid.getRowCount());
}
}
function setRowData(newRowHandle)
{
try
{
newRowHandle.setSelectedRows(objGrid.getRowCount() - 1);
newRowHandle.setCellText(dataRowArray, objGrid.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