2011-01-13 10 views
0

Ich habe ein DataGrid in meinem Projekt. Es passt nicht in die Breite des Formulars, daher wird die Bildlaufleiste angezeigt. Das DataGrid zeigt im Ausgangszustand einige Spalten und einen Teil der nächsten Spalte an (die nach dem Scrollen erscheinen würde).Get Breite der abgeschnittenen Spalte angezeigt

Gibt es eine Möglichkeit, kann ich die Breite von diesem anzeigen Teil?

Antwort

0

Ok, ich hatte etwas Zeit, um tiefer in dieses Problem zu graben. Ich habe ein paar Klassen durchsucht, um zu sehen, wie Adobe dieses Rasterverhalten implementiert hat (Spalten teilweise anzeigen). Also, für diejenigen, die brauchen, um damit umzugehen, das benötigte Teil ist in DataGrid.as Datei, Methode configureScrollBars .. tatsächlich, dieser Teil davon:

// if the last column is visible and partially offscreen (but it isn't the only 
     // column) then adjust the column count so we can scroll to see it 
     if (collectionHasRows && rowCount > 0 && colCount > 1 && 
      listItems[0][colCount - 1].x + 
      visibleColumns[colCount - 1].width > (displayWidth - listContent.x + viewMetrics.left)) 
      colCount--; 
     else if (colCount > 1 && !collectionHasRows) 
     { 
      // the slower computation requires adding up the previous columns 
      var colX:int = 0; 
      for (var i:int = 0; i < visibleColumns.length; i++) 
      { 
       colX += visibleColumns[i].width; 
      } 
      if (colX > (displayWidth - listContent.x + viewMetrics.left)) 
       colCount--; 
     } 

Das ist so ziemlich alles Code, was benötigt zu fangen und zu messen alle diese schwierigen geteilten Spalten in einem Gitter :)

1

Sie sollten die Breite des übergeordneten Objekts erhalten.

lassen Sie uns sagen, dass die Datenraster in der Anwendung ist, dann sollten Sie die Breite der Bühne bekommen. (Stage.stageWidth)

Wenn Ihr Datenraster auf einem bestimmten x-Position in Ihrer Anwendung (oder einem anderen übergeordneten Objekt) Dann sollten Sie die Breite des übergeordneten Objekts nehmen - den x-Wert Ihres Datagrids. (stage.stageWidth - dataGrid.x)

+0

Danke für Ihre Antwort. Ich habe bereits darüber nachgedacht, es selbst zu berechnen (naja, auf eine etwas andere Art ... etwas wie dataGridWidth% (visibleColumnsCount * columnWidth)). Ich habe mich nur gefragt, ob es eine vordefinierte Eigenschaft oder Methode gibt, um diesen Wert zu erhalten. – Antenka

Verwandte Themen