我在使用可观察类制作DropDownList时遇到问题。
下面是可观察类的代码:
var viewModel = kendo.observable({
dsMember: new kendo.data.DataSource({
type: "json",
serverFiltering: true,
serverPaging: true,
pageSize: 6,
error: function (e) {
top.CustomError(e);
},
transport: {
read: {
contentType: "application/json; charset=utf-8",
type: "GET",
url: function () {
return "../api/Member/" + viewModel.MemberParam;
},
dataType: "json",
cache: false,
complete: function (e) {
viewModel.set("SelectedMember", viewModel.dsMember.view()[0]);
}
},
update: {
contentType: "application/json; charset=utf-8",
type: "POST",
url: "../api/Member",
dataType: "json",
cache: false,
complete: function (e, textStatus) { top.CustomSuccess(e, textStatus); }
},
destroy: {
contentType: "application/json; charset=utf-8",
url: "../api/Member",
type: "DELETE",
dataType: "json",
cache: false,
complete: function (e) {
viewModel.NewRecord();
}
},
create: {
contentType: "application/json; charset=utf-8",
type: "PUT",
url: "../api/Member",
cache: false,
complete: function (e, textStatus) {
if (typeof (e.responseText) != "undefined") {
var response = $.parseJSON(e.responseText);
var obj = viewModel.dsMember.view()[viewModel.dsMember.view().length - 1];
obj.MemberId = response.MemberId;
viewModel.set("SelectedMember", obj);
document.getElementById("tbMemberId").value = obj.MemberId;
top.CustomSuccess(e, textStatus);
}
}
},
parameterMap: function (data, operation) {
return kendo.stringify(data);
}
},
batch: true,
schema: {
model: {
id: "MemberId",
fields: {
MemberId: {
type: "number",
editable: false // this field is not editable
},
MemberName: {
type: "text",
validation: { // validation rules
required: true // the field is required
}
},
id_function_club: {
type:"number"
},
name_function_club: {
type: "text"
}
}
}
}
}),
MemberParam: 0,
SelectedMember: null,
save: function () {
this.dsMember.sync();
},
remove: function () {
if (confirm("Are you sure you want to delete this record?")) {
this.dsMember.remove(this.SelectedMember);
this.set("SelectedMember", this.dsMember.view()[0]);
this.save();
}
},
NewRecord: function () {
var newRecord = new viewModel.dsMember.reader.model();
newRecord.MemberId = null;
viewModel.dsMember.add(newRecord);
viewModel.set("SelectedMember", viewModel.dsMember.view()[viewModel.dsMember.view().length - 1]);
}
});
这是我的工作下拉列表:
$("#ddFunctionClub").kendoDropDownList({
height: 150,
dataTextField: "name",
dataValueField: "id_function_club",
dataSource: {
type: "json",
transport: {
read: {
contentType: "application/json; charset=utf-8",
type: "GET",
url: function () {
return "../api/Function_Club";
},
dataType: "json",
cache: false
}
}
}
});
这是我的DropDownList的html:
<input id="ddFunctionClub" style="width: 100%;" />
最后,这是我从observable datasource请求中得到的结果:
{"MemberId":123,"MemberName":"Person","BirthDate":"10/01/1980","id_function_club":2,"name_function_club":"My Function","NameUnit":"My Unit"}
我做了一些研究,但找不到任何合适的例子。
我看了看:MVVM小部件绑定和周围玩数据绑定,数据值字段,数据文本字段,但不能得到我想要的结果。
因此,我正在寻找的是一种将常规DropDownList(绑定到数据源的DropDownList)绑定到可观察类的方法。例如,文本将绑定到SseltedMember.name_function_club而值将绑定到SseltedMember.id_function_club。
你能帮忙吗?
如果有不太清楚的地方,请留言询问更多信息。
谢谢!
如果我正确理解了你的情况,你实际上不需要两个DataSSource
。一个就足够了,因为它们实际上是可观察的,任何更新都会传播到DropDownList。
让我们定义kendoDropDownList
,如下所示:
$("#ddFunctionClub").kendoDropDownList({
height : 150,
dataTextField : "name_function_club",
dataValueField: "id_function_club",
dataSource : dataSource
});
最小DataSource
将是:
var dataSource = new kendo.data.DataSource({
type : "json",
transport: {
read: "xyz"
}
});
注意:我说最小的传输
,因为它可以像您需要的那样复杂(就像包含许多操作的原始传输一样)。
从服务器接收到的数据(据我从OP了解)将是一个对象数组,与您包含的对象一样。
var data = [
{"MemberId": 123, "MemberName": "Person", "BirthDate": "10/01/1980", "id_function_club": 1, "name_function_club": "My Function 1", "NameUnit": "My Unit"},
{"MemberId": 123, "MemberName": "Person", "BirthDate": "10/01/1980", "id_function_club": 2, "name_function_club": "My Function 2", "NameUnit": "My Unit"},
{"MemberId": 123, "MemberName": "Person", "BirthDate": "10/01/1980", "id_function_club": 3, "name_function_club": "My Function 3", "NameUnit": "My Unit"},
{"MemberId": 123, "MemberName": "Person", "BirthDate": "10/01/1980", "id_function_club": 4, "name_function_club": "My Function 4", "NameUnit": "My Unit"}
];
更改数据源后,DropDownList
将立即更改(例如,添加或删除元素或更改其内容)。
请参见此处的示例:http://jsfiddle.net/OnaBai/DtbQY/#base. 如果按下按钮Change DataSource
,列表将自动更新(插入两个元素并更新第二个元素)。
我在视图中定义了一个剑道下拉列表,如下所示: 我的模型有一个
如何将本地数组绑定到剑道的MVVM dropdown列表。 我有一个这样的阵列 我想把它绑定到我的输入控件 它不工作。有什么想法我可以实现这一点吗? 谢谢
我想把剑道下拉列表加入我的表格。一切都会好的,除了一件事。当我想用默认的剑道创建工具栏“添加记录”时,我不能绑定从dropdownlist数据源获取的第一个值。 数据源工作正常。DropDownlist也很好用。如果我手动从dropDownlist中选择任何东西,一切正常。 我也试过了。除了“索引”之外,我试图手动从数据源中选择第一项。从视觉上看,它工作得很好。即使选择了第三项,但当我单击“更新”
问题内容: 我正在将Kendo下拉列表从现有代码转换为Kendo multiselect。 角色代码:当前为Dropdownlist(转换为Kendo multiselect)。 我没有得到正确的输出。 我有以下代码: 下面是获取角色代码的控制器代码: 如您所见,我尝试在上面的代码中使用多选功能。但这没有用。 问题答案: 下面的代码为我工作:
我有以下剑道下拉列表: 然后,我的javascript可观察绑定: 当试图添加事件:{Change: eventLabelChange}到我的html dropDownlist元素中的数据绑定时,我得到处理程序没有定义错误,当它显然是(有趣的是,我有另一个dropDownlist与此页面上的相同类型的绑定完美地工作与变化事件罚款...)。 而且我无法获得默认值。我曾尝试在绑定后直接将dropdow
问题内容: 我正在尝试将项目设置为表视图,但是setitems方法需要一个可观察的列表,而我的模型中却有一个可观察的集合.FXCollections实用程序类没有给定可观察的集合来创建可观察的列表的方法。类强制转换异常(按预期)。 目前,我正在使用这种代码 而且我有一些问题: 在表中进行编辑是否会按预期更新基础集? 这是这样做的“正确”方法吗 简而言之,我需要样式指南或最佳做法,以便在可观察集和可