private function restoreColumns( headerTextArray:ArrayCollection, widthArray:ArrayCollection):void {
dg.removeEventListener( IndexChangedEvent.HEADER_SHIFT, this.saveColumns );
for (var n:int = 0; n < headerTextArray.length; n++)
{
trace ( "Before: n: " + n + " WA: " + widthArray.getItemAt(n) + " DG: " + dg.columns[n].width);
// moveColumnTo(String(headerTextArray.getItemAt(n)), n);
// Problems copying for the last column
dg.columns[n].width = 0;
trace ( "Middle: n: " + n + " WA: " + widthArray.getItemAt(n) + " DG: " + dg.columns[n].width);
dg.columns[n].width = widthArray.getItemAt(n);
trace ( "After: n: " + n + " WA: " + widthArray.getItemAt(n) + " DG: " + dg.columns[n].width);
}
dg.addEventListener( IndexChangedEvent.HEADER_SHIFT, this.saveColumns );
}
以下是上述代码的跟踪输出:
Before: n: 0 WA: 113 DG: 95
Middle: n: 0 WA: 113 DG: 20
After: n: 0 WA: 113 DG: 113
Before: n: 1 WA: 71 DG: 85
Middle: n: 1 WA: 71 DG: 20
After: n: 1 WA: 71 DG: 71
Before: n: 2 WA: 41 DG: 101
Middle: n: 2 WA: 41 DG: 101
After: n: 2 WA: 41 DG: 101
如您所见,
我无法将dg.columns [2] .width设置为所需的值。 [最后一栏出现问题。]
我也无法在中间跟踪之前设置dg.columns [0] .width = 0.
我最初认为moveColumnTo()可能与问题有关,但即使在对函数的调用进行评论之后我也遇到了问题。
有什么问题?
以下是调用restoreColumns的代码。 [我刚才意识到我可以编辑我原来的帖子并添加它。]
private function processQueryResponse(evt:DWSQLevent):void {
this.removeEventListener( IndexChangedEvent.HEADER_SHIFT, this.saveColumns );
this.removeEventListener( ResizeEvent.RESIZE, this.saveColumns );
var headerTextArray:ArrayCollection = new ArrayCollection();
var widthArray:ArrayCollection = new ArrayCollection();
if ( query.queryMessage == "SELECT" ) {
if (evt.dataRetrieved == true && query.queryData && query.queryData.length > 0 && query.queryData[0].length > 0 ) {
initialColumns = query.queryData[0];
var record:Object;
for (var n:Number = 0; n< this.columns.length; n++)
{
record = initialColumns.getItemAt(n);
headerTextArray.addItem(record.headertext);
widthArray.addItem( record.width );
}
restoreColumns( headerTextArray, widthArray);
haveColumnData = true;
} else if ( query.queryData.length > 0 && query.queryData[0].length == 0 ){
Alert.show( "Problems reading column data from database. Saved column order not restored." );
trace ("Select error / no rows "); // alert moving not done
}
} else {
}
this.addEventListener( IndexChangedEvent.HEADER_SHIFT, this.saveColumns );
// this.addEventListener( ResizeEvent.RESIZE, this.saveColumns );
}
答案 0 :(得分:0)
看起来你应该在循环条件中使用n < widthArray.length
而不是headerTextArray.length
。