2012-03-02 7 views
1

最初に私はFlexを初めて使用しましたが、私はこのチュートリアルと情報の助けを借りてこのアプリケーションをまとめました。基本的に私のアプリは名前、住所などのディレクトリのようですが、私はまた、 "週"と "日"の追加フィールドがあります。私がしようとしているのは、たとえばWeek1 - Mondayのような名前だけを表示するリストです。以下は私が何をしようとしているのか理解するために使用しているコードの一部です。私は助けていただきありがとうございます!Flex 4.6のモバイルsqlite固有のデータ

<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); 
+0

私はあなたが必要なものを行う場合、私は、私はあなたの質問を理解していることはよく分からないがs上のlabelFunctionです:代わりにlabelFieldプロパティを使用してのリスト、あなたが表示のためにするフィールド、機能をconjoinことができるようにアイテムを取る必要があります:データプロバイダのデータ要素の1つとして型指定されるオブジェクトパラメータ。戻り値a:String like ... function myLabelFunction(item:Object):関数内の戻り値item.weekValue + " - " + item.dayValueの文字列 – shaunhusain

+0

基本的にsqliteデータベースには、id、week、name、住所、市、州、郵便番号、電話番号私は特定の週と特定の日の名前を表示するリストを設定することができるようにしたい。たとえば、火曜日の第1週のすべての名前を表示します。 – Nik

+0

私はあなたに答えを与えることができると思う前に大丈夫2つの質問。 1 processRowとは何ですか? 2あなたは週と日を選択し、その週と日にのみ一致する行を与える他の入力ボックスを持っていますか? – shaunhusain

答えて

0

を追加し、私は専門家で
ないんだと思いますが、これはあなたを助けることができるよりも、私は思います!

<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> 
+0

私はこれがうまくいくと思いますが、エラーが発生しています。1137:引数が正しくない、次の行に1つしかないと思われるdoctorList.addItem(result [index] .week、result [index] .day、result [index ]。名); – Nik

+0

リストビューのデザインモードに切り替えるとエラーが発生しますが、以前はこれを見たことがありませんが、デザインは表示されません。それは、 "そのプロパティがタグまたは属性として明示的に設定されている場合、デフォルトプロパティdataproviderの値を指定することはできません。 – Nik

+0

コードの他の部分でdList変数を初期化する必要がありますが、dataProvider(dataProvider = "{dList}")ではなく、別の関数でこの 'dList = doctors()'を実行してください。 – Superlandero

1

が、これはChristophe Coenraetsemployee directory sampleに触発されたと仮定すると、あなたは医者クラスを作成し、ArrayCollectionの中で、新しく作成された医師のオブジェクトを追加する前に、あなたの取得したデータをprocessRow機能でのパブリック変数を設定する必要があると思います。

<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> 
関連する問題