Специфичные данные для мобильных устройств Flex 4.6 - PullRequest
1 голос
/ 02 марта 2012

Прежде всего, я новичок в использовании Flex, но я собрал это приложение вместе с помощью онлайн-учебников и информации. По сути, мое приложение похоже на каталог имен, адресов и т. Д., Но у меня также есть дополнительные поля «неделя» и «день». То, что я пытаюсь сделать, это иметь список, который показывает только названия, например, Неделя 1 - понедельник. Ниже приведен код, который я использую, чтобы помочь вам понять, что я пытаюсь сделать. Я ценю любую помощь!

<s:List dataProvider="{AddDoctorDatabase.doctors()}" labelField="name" change="onDoctorSelected(event)"
        left="0" right="0" top="0" bottom="0">
</s:List>


public static function doctors():ArrayCollection
    {
        var doctorList:ArrayCollection = new ArrayCollection();

        var sql:String = "SELECT id, week, day, name, address, city, state, zip, phone FROM doctors";
        var stmt:SQLStatement = new SQLStatement();
        stmt.sqlConnection = sqlConnection;
        stmt.text = sql;
        stmt.execute();
        var sqlResult:SQLResult = stmt.getResult();
        if (sqlResult) {
            var result:Array = sqlResult.data;
            if (result) {
                for (var index:Number = 0; index < result.length; index++) {
                    doctorList.addItem(processRow(result[index]));
                }
            }
        }
        return doctorList;
    }

Добавление врача

<s:SpinnerListContainer>
        <s:SpinnerList id="weekField" width="100" height="75" labelField="week">
            <s:ArrayList>
                <fx:Object week="Week 1"/>
                <fx:Object week="Week 2"/>
            </s:ArrayList>                        
        </s:SpinnerList>
    </s:SpinnerListContainer>

    <s:Label text="Select a day:"/>
    <s:SpinnerListContainer>
        <s:SpinnerList id="dayField" width="100" height="150" labelField="day">
            <s:ArrayList>
                <fx:Object day="Monday"/>
                <fx:Object day="Tuesday"/>
                <fx:Object day="Wednesday"/>
                <fx:Object day="Thursday"/>
                <fx:Object day="Friday"/>
            </s:ArrayList>                        
        </s:SpinnerList>
    </s:SpinnerListContainer>

protected function onSave():void {
            var newDoctor:AddDoctor = new AddDoctor();
            newDoctor.week = weekField.selectedItem;
            newDoctor.day = dayField.selectedItem;
            newDoctor.name = nameField.text;
            newDoctor.address = addressField.text;
            newDoctor.city = cityField.text;
            newDoctor.state = stateField.text;
            newDoctor.zip = zipField.text;
            newDoctor.phone = phoneField.text;
            AddDoctorDatabase.addDoctor(newDoctor);

Ответы [ 2 ]

1 голос
/ 08 мая 2012

Предполагая, что это вдохновлено Christophe Coenraets образец справочника сотрудника , вам нужно будет создать класс Doctor и установить его публичную переменную в функции processRow с вашими полученными данными перед добавлением вновь созданного объекта Doctor в ArrayCollection:

<fx:Script>
  <![CDATA[
   //Add this
   [Bindable]
   public var dList:ArrayCollection;



private function searchDoctorsClicked(event:MouseEvent):void
{
    dList = getDoctorForWeekAndDay(weekField.selectedItem, dayField.selectedItem);
}

private function creationComplete_handler(event:Event):void
{
    dList = getAllDoctors();
}

public function getAllDoctors():ArrayCollection
{
    var doctorList:ArrayCollection = new ArrayCollection();

    var sql:String = "SELECT id, week, day, name, address, city, state, zip, phone FROM doctors";
    var stmt:SQLStatement = new SQLStatement();
    stmt.sqlConnection = sqlConnection;
    stmt.text = sql;
    stmt.execute();
    var result:Array = stmt.getResult().data;
    if (result)
    {
       for (var index:Number = 0; index < result.length; index++)
       {
        //doctorList.addItem(processRow(result[index]));
        doctorList.addItem({result[index].week, result[index].day, result[index].name});
       }
       return doctorList;
    }
  else
  { 
     return null;
  }
}
public function processRow(o:Object):Doctor
{
    var d:Doctor = new Doctor();
    d.Name = o.name;
    d.week = o.week;
    d.day  = o.day;

    return d;
}
public class Doctor()
{
    public function Doctor(){}
    public var name:String;
    public var week:String;
    public var day:int;
}

//Call this one when they select a week and day and hit a button, or just
//on change of those options pass through the value/selectedItem from each list
public function getDoctorForWeekAndDay(chosenWeek:String, chosenDay:String):ArrayCollection
{
    var doctorList:ArrayCollection = new ArrayCollection();

    var sql:String = "SELECT id, week, day, name, address, city, state, zip, phone FROM doctors WHERE week='"+chosenWeek+"' AND day='"+chosenDay+"'";
    var stmt:SQLStatement = new SQLStatement();
    stmt.sqlConnection = sqlConnection;
    stmt.text = sql;
    stmt.execute();
    var result:Array = stmt.getResult().data;
    if (result)
    {
       for (var index:Number = 0; index < result.length; index++)
       {
        doctorList.addItem(processRow(result[index]));
       }
       return doctorList;
    }
  else
  { 
     return null;
  }
}
]]>
</fx:Script>

<s:List dataProvider="{dList}" change="onDoctorSelected(event)" left="0" right="0" top="0" bottom="0">
  <s:IconItemRenderer label="{week} - { day }" messageField="name" />
</s:List>
0 голосов
/ 03 марта 2012

Это должно работать, я думаюЯ не эксперт, но я думаю, что это может вам помочь!

<fx:Script>
  <![CDATA[
   //Add this
   [Bindable]
   public var dList:ArrayCollection;

private function searchDoctorsClicked(event:MouseEvent):void
{
    dList = getDoctorForWeekAndDay(weekField.selectedItem, dayField.selectedItem);
}

private function creationComplete_handler(event:Event):void
{
    dList = getAllDoctors();
}

public function getAllDoctors():ArrayCollection
{
    var doctorList:ArrayCollection = new ArrayCollection();

    var sql:String = "SELECT id, week, day, name, address, city, state, zip, phone FROM doctors";
    var stmt:SQLStatement = new SQLStatement();
    stmt.sqlConnection = sqlConnection;
    stmt.text = sql;
    stmt.execute();
    var result:Array = stmt.getResult().data;
    if (result)
    {
       for (var index:Number = 0; index < result.length; index++)
       {
        //doctorList.addItem(processRow(result[index]));
        doctorList.addItem({result[index].week, result[index].day, result[index].name});
       }
       return doctorList;
    }
  else
  { 
     return null;
  }
}


//Call this one when they select a week and day and hit a button, or just
//on change of those options pass through the value/selectedItem from each list
public function getDoctorForWeekAndDay(chosenWeek:String, chosenDay:String):ArrayCollection
{
    var doctorList:ArrayCollection = new ArrayCollection();

    var sql:String = "SELECT id, week, day, name, address, city, state, zip, phone FROM doctors WHERE week='"+chosenWeek+"' AND day='"+chosenDay+"'";
    var stmt:SQLStatement = new SQLStatement();
    stmt.sqlConnection = sqlConnection;
    stmt.text = sql;
    stmt.execute();
    var result:Array = stmt.getResult().data;
    if (result)
    {
       for (var index:Number = 0; index < result.length; index++)
       {
        //doctorList.addItem(processRow(result[index]));
        doctorList.addItem({result[index].week, result[index].day, result[index].name});
       }
       return doctorList;
    }
  else
  { 
     return null;
  }
}
]]>
</fx:Script>

<s:List dataProvider="{dList}" change="onDoctorSelected(event)" left="0" right="0" top="0" bottom="0">
  <s:IconItemRenderer label="{week} - { day }" messageField="name" />
</s:List>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...