FLEX: динамический доступ к нескольким сетям данных путем передачи идентификаторов вызывающего объекта в функцию - PullRequest
0 голосов
/ 22 марта 2011

решено

У меня есть приложение Flex / PHP, над которым я работаю.

У меня есть одна коллекция ArrayCollection для источника данных, но у меня есть 8 наборов данных (с именами от dg1 до dg8).Я использую 8 данных для логического представления (4 года в колледже, 2 семестра в год).У меня есть столбец с «X» (для «удалить эту запись»), который идет в функцию при нажатии.

Что я хотел бы сделать, это передать идентификатор сетки данных (например, "dg1") и поставщик данных {syllabus.freshFall} в функцию.Я изо всех сил пытался найти, как я это делаю, но нашел только примеры одиночных наборов данных (которые выглядят довольно просто) и ссылаюсь на один фиксированный массив данных, как это:

course_id=dg1.selectedItem.course_ID;
syllabus.freshFall.removeItemAt(dg1.selectedIndex);

Я хочусделайте это примерно так:

course_id=**whateverDataGrid**.selectedItem.course_ID;
**whateverDataProvider**.removeItemAt(**whateverDataGrid**.selectedIndex);

СЕЙЧАС Мне нужна помощь для передачи моей переменной c_id в мой HTTPService.

Спасибо за ВСЕ вашу помощь!

1 Ответ

0 голосов
/ 24 марта 2011

ЧАСТИЧНЫЙ ОТВЕТ:

с помощью Adobe LiveDocs для Flex 3

<mx:LinkButton label="X" click="outerDocument.itemClickEvent('1',event)"/>


public function itemClickEvent(id:String, event:MouseEvent):void {
        var mydp:Object;
        switch(int(id))
        {
            case 1:
                mydp=syllubus.freshFall;
                break;
                               .
                               .
                            case 8:
                mydp=syllubus.seniorSpring;

            default:
                trace("Out of range");
                break;
        }
        id = "dg" + id;
        c_id=this[id].selectedItem.course_ID;
        mydp.removeItemAt(this[id].selectedIndex);  //superficial datagrid delete

Я все еще хотел бы сделать поставщика данныхбольше переменной, просто чтобы быть полным.Я попробовал несколько разных подходов, и операторы case были ближе всего к тому, что я хотел, и пока работал .

Выяснил, как передать мою переменную c_id из моей функции в мой HTTPService.Не совсем так просто, как я бы надеялся ...

Создание переменной в типе Object Добавить элемент к объекту имени переменной, которую вы хотите передать Добавить значение для переменной,Передайте

Это выглядит так:

function blah (var:int, ...rest):void {

code...

code...

c_id= *whatever*;
params["cid"] = c_id;
update.send(params);  (where "update" is the HttpService id)
}

.
.
.
.

<mx:HTTPService 
    id="update"     
    url="http://localhost/myFile.php" 
    method="POST"  
    etc...>
 <mx:request>
   <xmlstring>{XMLString}</xmlstring>   (this xml string is generated elsewhere)
   <cid>c_id</cid>
 </mx:request>
</mx:HTTPService>

Надеюсь, это поможет кому-то еще.Было немного трудно собрать все это вместе.

...