2012-02-05 4 views
2

を追加した後、ドロップダウンリストを更新できません。道場:私は、このリンクでは、IBMのチュートリアルで遊んでてきた新しいグループ

http://www.ibm.com/developerworks/web/tutorials/wa-dojotoolkit/section6.html

私はこれまでのところ非常によくやったが、私は新しいグループエントリを取り込むために、ドロップダウンリストを取得するように見えることはできません。元のコードさえも機能しません。

//Refresh the data store for the groups dropdown (in case groups added, edited or deleted) 
function refreshGroupDropDown() { 
    var theStore = dijit.byId("edit_contact_group").store; 
    theStore.close(); 
    theStore.url = "data/groups.php"; 
    theStore.fetch(); 
} 

ありがとう!

更新:まだ問題があります。私はこれをまだ試してみました。関数refreshGroupDropDown()は、ユーザーが連絡先の編集ウィンドウまたは新しい連絡先ウィンドウを開くときに呼び出されます。

//Refresh the data store for the groups dropdown (in case groups added, edited or deleted) 
function refreshGroupDropDown() { 
    var new_store = new ItemFileReadStore({url: 'data/groups.php' , clearOnClose: true}); 
    var theStore = dijit.byId("edit_contact_group"); 
    theStore.store = new_store; 
    theStore.close(); 
    theStore.fetch(); 

} 

    //Clears the "Edit Contact" form, sets it up for adding a new contact 
function newContact() { 
    var contact = contactsGrid.selection.getSelected()[0]; 
    refreshGroupDropDown(); 
    dojo.byId("edit_contact_real_id").value = ""; 
    dojo.byId("edit_contact_id").value = "[NEW]"; 
    dijit.byId("edit_contact_group").reset(); 
    dijit.byId("edit_contact_first_name").reset(); 
    dijit.byId("edit_contact_last_name").reset(); 
    dijit.byId("edit_contact_email_address").reset(); 
    dijit.byId("edit_contact_home_phone").reset(); 
    dijit.byId("edit_contact_work_phone").reset(); 


    dijit.byId("editContactDialog").set("title", "New Contact"); 
    dijit.byId("editContactDialog").show(); 
} 

    //Process the adding of a new group to the database 
function doNewGroup(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    dojo.byId("new_group_ajax").value = "1"; 
    if(this.isValid()) { 
     dojo.xhrPost({ 
      form: this.domNode, 
      handleAs: "json", 
      load: function(data) { 
       if(data.success) { 
        okDialog.set("title","Group created successfully"); 
        okDialogMsg.innerHTML = "The group <strong>"+data.name+"</strong> was created successfully."; 

        groupsStore.newItem({"id":data.id.toString(),"name":data.name}, {"parent": groupsModel.root, "attribute":"groups"}); 
        groupsStore.save(); 

        newGroupDialog.hide(); 
        okDialog.show(); 
       } 
       else { 
        okDialog.set("title","Error creating group"); 
        okDialogMsg.innerHTML = data.error; 
        okDialog.show(); 
       } 
      }, 
      error: function(error) { 
       okDialog.set("title","Error creating group"); 
       okDialogMsg.innerHTML = error; 
       okDialog.show(); 
      } 
     }); 
    } 
} 

この機能が役立ちますように!私は初心者ですので、どんな助けもありがとうございます。あなたが投稿した内容に基づいて

答えて

2

...常に心に来て最初のものです!問題はindex.htmlにありました。グループドロップダウンリストの入力タグは次のようになります

<input dojoType="dijit.form.FilteringSelect" name="move_contact_new" store="groupsStore" searchAttr="name" query="{type:'node'}" id="move_contact_new" required="true" style="margin-bottom: 6px" /> 

クエリ属性が正しく設定されていませんでした。 query = "{type: 'node'}"を削除すると、グループの追加、編集、削除後にグループが再設定されます。

初心者の質問のための初心者の答え。

が、これはそこに任意の初心者を助けることができると思います。

0

それはacutallyデータストアを作成していないので、私が見る唯一の問題は、ラインVAR theStore = dijit.byId("edit_contact_group").store;です。 `var edit_contact_group = new dojo.data.ItemFileReadStore();または同等のものも含める必要があります。そうでなければ、dojo.connect()を使用してrefreshGroupDropDown()関数を適切なイベント( 'onclick'など)に接続しましたか? dojo.readyを使用してrefreshGroupDropDown()関数をロードしましたか?すなわち、 dojo.ready(function(){refreshGroupDropDown();});これらは、私はそれを考え出した

関連する問題