如何在kendo自动完成选择中保存变量中的整个对象

时间:2013-05-20 14:10:32

标签: autocomplete kendo-ui datasource

我需要有关kendo自动完成小部件的帮助... 也许这是一个愚蠢的问题,但我无法达成解决方案! 我的kendoAutoComplete小部件从c#webservice获取数据:

 [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)]
 [WebMethod]
    public string getComuniList()
    {
        using (PrintInvoicesDataContext context = new PrintInvoicesDataContext())
        {
            List<comuni_italia> comuni = new List<comuni_italia>();
            comuni = context.comuni_italia.ToList();

            var jsonStr = JsonConvert.SerializeObject(comuni, Formatting.Indented);
            return jsonStr;
        }

    }

此方法返回一个长对象数组,如下所示:

[  {id_comune: 1, des_comune: "Milano", cod_comune: "A130", cap_comune: "64022"},
   {id_comune: 2, des_comune: "Torino", cod_comune: "A131", cap_comune: "64100"},
   ....
]

所以,当我在kendo自动完成小部件中选择一个项目时,在select事件上,我需要将整个所选对象保存在变量中。

var comuneAutoComplete = $("#comune_w").kendoAutoComplete({
    minLength: 3,
    dataSource: dataSource,
    placeholder: "Inserisci comune...",
    dataTextField: "des_comune",
    dataValueField: "id_comune"
}).data("kendoAutoComplete").bind("select", function (data) {
    //here i want to save the object
    var comune = ????????
});

这样我就可以得到像这样的字段值:

var id_com = comune.id_comune;
var des_com = comune.des_comune;
..........

这是数据源的模型:

model: {
    fields: {
        id: "id_comune",
        id_comune: { type: "string" },
        des_com: { type: "string" },
        des_prv: { type: "string" },
        des_reg: { type: "string" },
        cod_com: { type: "string" },
        cod_prv: { type: "string" },
        cod_res: { type: "string" }
    }

有可能吗? 希望可以有人帮帮我! 提前谢谢。

1 个答案:

答案 0 :(得分:3)

dataSource获取所选项目的数据是:

var comuneAutoComplete = $("#comune_w").kendoAutoComplete({
    minLength: 3,
    dataSource: dataSource,
    placeholder: "Inserisci comune...",
    dataTextField: "des_comune",
    dataValueField: "id_comune"
}).data("kendoAutoComplete").bind("select", function (data) {
    //here i want to save the object
    var comune = this.dataItem(e.item.index());
    ...
});