2014-12-30 2 views
-1

Я делаю Datagrid, даю ему столбцы и так много данных, которые нужно прокручивать, а dataitems - строки настолько широкие, что их нужно также прокручивать по горизонтали. Я также даю ему метод прослушивания кликов.Сетка в DataGridSkin больше, чем dataGrid

Проблема в том, что, если я нажимаю под элементом данных, он по-прежнему выполняет метод щелчка. Я проверяю цель в событии методом щелчка, и он говорит, что его «сетка» (сетка в DataGridSkin)

В принципе, «сетка» с кожи становится такой же широкой (по горизонтали и вертикали), что и данные, даже если все реквизиты, которые показывают высоту и ширину, говорят, что они имеют нормальную высоту и ширину.

Проблема в том, что «сетка» перехватывает все события мыши, делая все кнопки под dataGrid бесполезными.

Я попытался установить maxHeight/Width на сетке, но это не поможет.

Это ошибка в Spark или что?

EDIT: Я только понял, что проблема немного более конкретна.

В главном app.mxml у нас есть огромный viewstack и под ним панель с кнопками. NavigatorContents viewStack - это все разные виды моего приложения, и изменение вида - это просто изменение текущего выбранного элемента viewStack.

Теперь проблемный datagrid не влияет на какие-либо компоненты из вида, в котором он находится (но все же отправляет событие click, если вы нажимаете прямо под ним в пустом пространстве), но он перехватывает все mouseEvents для кнопок в панели в главный app.mxml.

Вот как это выглядит следующим образом: (не точный код, потому что его действительно большой)

<s:BorderContainer borderVisible="false" backgroundAlpha="0.5" bottom="0" visible="{mainViewStack.selectedIndex > 0}" width="100%"> 
    <s:layout> 
     <s:HorizontalLayout verticalAlign="middle" paddingLeft="40" paddingRight="40" paddingBottom="0"> 
     </s:HorizontalLayout> 
    </s:layout> 
    <s:Label right="60" fontSize="25" color="white" text="some text"/> 
    <s:Label right="60" fontSize="12" paddingTop="3" color="white" id="lblVersion"/> 
    <s:Spacer width="100%" /> 

    <s:Image id="img_Back" buttonMode="true" click="img_back_clickHandler(event)" 
      source="@Embed(source='assets/images/undo.png')" toolTip="zurück"/> 
    <s:Image id="img_settings" buttonMode="true" 
      source="@Embed(source='/assets/images/gears.png')" toolTip="Einstellungen" /> 
    <s:Image id="img_logout" buttonMode="true" click="img_logout_clickHandler(event)" 
      source="@Embed(source='assets/images/window_key.png')" toolTip="ausloggen"/> 
    <s:Image id="img_newWindow" buttonMode="true" click="img_newWindow_clickHandler(event)" 
      source="@Embed(source='assets/images/window_key.png')" toolTip="Neues Fenster"/> 

</s:BorderContainer> 

<mx:ViewStack id="mainViewStack" left="0" right="0" top="0" bottom="60" selectedIndex="0" change="mainViewStack_changeHandler(event)" > 
    <s:NavigatorContent label="someView" backgroundColor="#707572"> 
     <someView id="someView"/> 
    </s:NavigatorContent> 

    <s:NavigatorContent label="someView" backgroundColor="#707572"> 
     <someView id="someView"/> 
    </s:NavigatorContent> 

    <s:NavigatorContent label="someView" backgroundColor="#707572"> 
     <someView id="someView"/> 
    </s:NavigatorContent> 
</mx:ViewStack> 

Если какие-либо из этих мнений есть DataGrid, который делает такие вещи, как я упоминал выше, то он будет перехватывать любого mouseEvents для кнопок в borderContainer.

<s:DataGrid id="tableList" width="200" height="100%" doubleClickEnabled="true" doubleClick="createSelectStatement(event)" > 
      <s:columns> 
       <s:ArrayList> 
        <s:GridColumn labelFunction="tableLabelFunction" headerText="Tables"/> 
       </s:ArrayList> 
      </s:columns> 
     </s:DataGrid> 
+0

Показать Ваш код. Без этого никто не сможет помочь. Это не похоже на проблему с искровым компонентом. – Brian

+0

@Brian см. Обновленный вопрос –

ответ

0

ОК, я только что нашел решение моей проблемы, вы просто дать глубину BorderContainer = «2» и глубину ViewStack = «1» и DataGrid обыкновение перехватывать mouseevents для BorderContainer, Буц его еще почему я должен был это сделать в первую очередь?

Я говорю вам, ребята, dataGrid прослушивается, попробуйте сами, просто сделайте datagrid, дайте ему несколько столбцов, столько данных, которые он должен прокрутить, и событие click. Нажмите под datagrid (в фоновом режиме), и он все равно выполнит событие click.