2014-02-12 43 views
0
 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 

正如你所看到的,

  1. 我不能設置dg.columns [2 ] .width到所需的值。 [問題發生在最後一列。]

  2. 我也無法在中間跟蹤之前設置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

我正在考慮它,但是,你可以嘗試改變這個「數字」變量作爲一個「int」變量在這裏:'for(var n:Number = 0; n

回答

0

它看起來你應該在你的循環條件使用n < widthArray.length代替headerTextArray.length

+1

這兩個長度相同。 [我想發佈調用restoreColumns的函數,但它會超過評論的字符數限制。] –

+0

添加爲原文內容? –

+0

其實你最好發表你如何填充「dg.columns []」數組。 ,因爲它看起來像這個代碼工作,但可能是在dg.columns []和「寬度」的問題 –