我在这个链接上一直在玩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();
}
});
}
}
希望这有帮助!我是初学者,所以感谢任何帮助。
答案 0 :(得分: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'}”后,组会在添加,编辑或删除组后重新填充。
初学者问题的初学者答案。
希望这可以帮助任何初学者。
答案 1 :(得分:0)
根据您发布的内容,我看到的唯一问题是使用行var theStore = dijit.byId("edit_contact_group").store;
,因为它没有实际创建dataStore。您需要确保还包含`var edit_contact_group = new dojo.data.ItemFileReadStore();
或类似内容。是的,您是否已使用dojo.connect()将refreshGroupDropDown()函数连接到适当的事件('onclick'或其他)?你是否使用dojo.ready加载了函数refreshGroupDropDown()?即。 dojo.ready(function(){refreshGroupDropDown();});
这些始终是我想到的第一件事......