سؤال

لديّ dataGrids وأريد تجاوز سلوك حدث مفتاح Tab ، بحيث ينتقل إلى بيانات البيانات التالية ، عندما يصل المؤشر إلى نهاية أعمدة بيانات البيانات الأولى.

أي تلميحات موضع تقدير!

ماركوس

هل كانت مفيدة؟

المحلول

Markus ، هذا عرض وظيفي إلى حد ما يجب أن يجعلك على المسار الصحيح:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
    <mx:Script>
        <![CDATA[
            [Bindable]
            private var src:Array = [
                { a:1, b:2, c:3 },
                { a:1, b:2, c:3 },
                { a:1, b:2, c:3 }
                ];

            private function init() : void
            {
                this.systemManager.addEventListener( KeyboardEvent.KEY_DOWN, onKeyDown );
            }

            private function onKeyDown(e:KeyboardEvent) : void
            {
                trace (dg1.rowCount, dg1.columnCount);
                if (e.target.parent.parent.parent is DataGrid)
                    var dg:DataGrid = e.target.parent.parent.parent as DataGrid;
                    if (dg == dg1)  
                        if (dg.editedItemPosition.columnIndex == dg.columnCount - 1)
                            if (dg.editedItemPosition.rowIndex == (dg.rowCount / 2) - 1)                                
                                dg2.setFocus();                 
            }
        ]]>
    </mx:Script>
    <mx:VBox>           
    <mx:DataGrid id="dg1" dataProvider="{src}" tabEnabled="true" editable="true">
        <mx:columns>
            <mx:DataGridColumn headerText="A" dataField="a" />
            <mx:DataGridColumn headerText="B" dataField="b" />
            <mx:DataGridColumn headerText="C" dataField="c" />
        </mx:columns>
    </mx:DataGrid>
    <mx:TextInput text="dfalsdfasdf" />
    <mx:DataGrid id="dg2" dataProvider="{src}" tabEnabled="true" editable="true">
        <mx:columns>
            <mx:DataGridColumn headerText="A" dataField="a" />
            <mx:DataGridColumn headerText="B" dataField="b" />
            <mx:DataGridColumn headerText="C" dataField="c" />
        </mx:columns>
    </mx:DataGrid>
    </mx:VBox>
</mx:Application>

في الأساس ، هذا هو datagrids مع حقل النص بينهما. إذا كنت تريد علامة التبويب بشكل طبيعي من الخلية القابلة للتحرير الأخيرة من الشبكة الأولى ، فسيذهب ذلك إلى حقل النص أولاً ، فسيقوم حدث علامة تبويب أخرى بتعيين التركيز على بيانات البيانات الثانية.

قلت إن هذا كان "وظيفيًا إلى حد ما" ، حيث لا يبدو أنني أحصل على بيانات دقيقة. هذا هو السبب في وجود DG.Rowcount / 2 تسجيل الوصول هناك.

نأمل أن يساعد هذا في تحريكك إلى الأمام ؛)

نصائح أخرى

لقد وجدت المشكلة مع Rowcount. لا يمثل RowCount مقدار البيانات الموجودة في الشبكة ، فهو يمثل عدد الصفوف التي تم إنشاؤها ... لذلك إذا نظرت إلى بيانات البيانات ، فأنت ترى أن كل صفات 6 صفوف! لهذا

للحصول على الكمية المناسبة من البيانات التي أستخدمها dg.dataprovider.length ...

شكرا مرة أخرى ، إنه يعمل الآن بشكل مثالي!

ماركوس

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top