User Data is missing in FIRST ROW only


I am setting user data in a grid, and it works fine when I initialize from script and manually set the user data values. However, I subsequently do an ajax call and update the grid like so:



When i do:

rowFileId= grid.getUserData(0, “fileId”);

The value rowFileId is always empty, but it works fine for all other rows!! Here is the xml that was parsed:

<?xml version="1.0" encoding="utf-8"?>




















            the one ii.txt







I even tried manually setting the user data using this code, and I had the same result:

function setUserDataFromXML(gridElem, xmlObj){

var root = xmlObj.getElementsByTagName(‘rows’)[0];

var rows = root.getElementsByTagName(‘row’);

for (var i = 0 ; i < rows.length ; i++) {

var row = rows[i];

var rowId= row.getAttribute(“id”);

var dataVals = row.getElementsByTagName(‘userdata’);

for (var j = 0 ; j < dataVals.length ; j++) {

var dataVal = dataVals[j];

// now we have the item object, time to get the contents

// get the name of the item

var name = dataVal.getAttribute(‘name’);

// get the value

var value = ‘’;

if (dataVal.firstChild) value= dataVal.firstChild.nodeValue.replace(/^\s+|\s+$/g, ‘’);

gridElem.setUserData(rowId,name, value);

alert("Set userdata: " + rowId + ", " + name + ", " + value);




Method getUserData() has parameters: row_id - row id (not row index), name - name of user data.

In you case should be:

rowFileId= grid.getUserData(“0”, “fileId”);

To get row ID by row index you can use: mygrid.getRowId(ind)

Aha, thanks that worked. I WAS passing the rowIds, but as a Number. I was actually passing a variable named ‘id’ to the function, which contained a numeric version of the rowId.

rowFileId= grid.getUserData(id, “fileId”);

I changed it to:

rowFileId= grid.getUserData(String(id), “fileId”);

And it works fine! Thanks again.

JS has no strict type , so 0 can be counted the same as null in some cases, which may cause problem
It will be more safe not use such IDs as 0, null, false