在做分享的Demo时,初次使用了V2的DataGrid组件,用来存放Diary列表,如下图
1:绑定数据
这里使用的XML作为数据源
function LoadList(vDate) {
myDataGrid.removeAll();
var objXml = new XML();
objXml.load("diary.xml");
objXml.ignoreWhite = true;
objXml.onLoad = function(success) {
if (success) {
for (var i = 0; i<objXml.childNodes[0].childNodes[1].childNodes.length; i++) {
var objItem = objXml.childNodes[0].childNodes[1].childNodes[i].childNodes;
var strID = objItem[0].childNodes.toString();
var strTitle = objItem[1].childNodes.toString();
var strDate = objItem[2].childNodes.toString();
var strContent = objItem[3].childNodes.toString();
if(vDate != ""){
if(vDate == strDate){
var objListItem = {序号:strID, 主题:strTitle, 日期:strDate};
myDataGrid.addItem(objListItem);
}
}else{
var objListItem = {序号:strID, 主题:strTitle, 日期:strDate};
myDataGrid.addItem(objListItem);
}
myDataGrid.getColumnAt(0).width = 40;
myDataGrid.getColumnAt(1).width = 170;
myDataGrid.getColumnAt(2).width = 60;
}
}
}
}
2:现在要点击DataGrid中某一行时获得“序号”栏位下的值,搞了半天也没有发现什么方法能够获得。
Flash帮助中只提供了如下的方式:
listenerObject = new Object();
listenerObject.cellPress = function(eventObject){
// 此处插入您的代码
}
myDataGridInstance.addEventListener("cellPress", listenerObject)
其中eventObject提供的以下几个属性:
columnIndex 一个数字,指明目标列的索引。第一个位置是 0。
itemIndex 一个数字,指明目标行的索引。第一个位置是 0。
type 字符串 "cellPress"。
但是通过这些属性,琢磨了半天也没有找到合适的方法获取选中行的“序号”。
后来,经过不断的测试加联系(与ASP.NET的DataGrid相似)发现,原来可以采用如下的方式:
MyListenerOnGrid = new Object();
MyListenerOnGrid.cellPress = function(eventObject){
//var rowID = eventObject.itemIndex;
//var oColumn = myDataGrid.getColumnAt(0);
var strID = myDataGrid.selectedItem[myDataGrid.columnNames[0]];
trace(strID);
}
myDataGrid.addEventListener("cellPress", MyListenerOnGrid);
原来它也有selectedItem的属性,哎,就是帮助太少了,都没有提到它!
不管怎么说,辗转几番还是搞定了,呵呵!