получить идентификатор в navigatorcontent

#apache-flex #actionscript

#apache-гибкий #actionscript

Вопрос:

«Stab» — это tabnavigator, мне нравится получать доступ к идентификатору в navigatorcontent, который является datagrid. Я пытался getchildbyname , но, похоже, не могу найти datagrid «nc1, nc2 и т.д.» И вернуть null.

 private var pdg:String="nc";
        private function stabAdd():void {
            var dg1:DataGrid = new DataGrid();
            var cn:NavigatorContent = new NavigatorContent(); 
            stab.addElement(cn);
            cn.label = "New Tab";
            cn.name = "nct" nu;
            cn.id = "nct" nu;
            dg1.id = "nc" nu;
            dg1.name = "nc" nu;
            pdg = dg1.id;   //set this as current datagrid
            nu  ;

            var columns:Array = [];
            var myDataGridColumn:DataGridColumn = new DataGridColumn("id");
            myDataGridColumn.headerText = "ID";
            myDataGridColumn.width = 40;
            columns.push(myDataGridColumn);
            myDataGridColumn = new DataGridColumn("username");
            myDataGridColumn.headerText = "Name";
            myDataGridColumn.width = 160;
            .....
            dg1.columns = columns;

            cn.addElement(dg1);
            stab.selectedIndex = stab.numChildren-1;
        }
  

Комментарии:

1. Мне не нравится getChildByName() — попробуйте вместо этого использовать container["nc1"] etc.

2. Могу ли я получить руководство по «контейнеру»? Похоже, нам это неизвестно.

3. контейнер -> родительский элемент DataGrid.

4. о, извините, я все еще не могу его получить. Можете показать мне код?

5. родительским элементом datagrid является cn, который является NavigatorContent, но в нем отображается только «содержит», но не «контейнер»

Ответ №1:

Контейнер — это просто моя терминология для обозначения родительского элемента.. Как насчет того, чтобы просто добавить все ваши DataGrids в массив. Затем вы можете выполнять поиск по идентификатору, например:

 function findDataGrid(findID:String):DataGrid
{
    var i:DataGrid;
    for each(i in array)
    {
        if(i.id == findID) return i;
    }

    return null;
}
  

Комментарии:

1. Это то, о чем я думаю, но, когда я хотел удалить все () содержимое datagrid, оно вернет идентификатор, который не может быть найден. Я все еще надеюсь, что смогу получить к нему доступ методом иерархии.