首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过Kendo DataSource发送“复杂对象”(读取)?

通过Kendo DataSource发送“复杂对象”(读取)?
EN

Stack Overflow用户
提问于 2018-10-12 03:53:34
回答 1查看 0关注 0票数 0

我正在使用Kendo AutoComplete&需要将“复杂对象”传递给我的“查找”操作。起初,我尝试使用Kendo DataSource的本机属性......但它无法在我的“复杂对象”中序列化数组(它始终是Null&不是Array

因此,我决定看看$.ajax()Kendo的序列化工作(见下面的代码)。

问题: API调用返回数据......但DataSources _data仍为空

我如何能...

  • 使用Ajax调用将数据导入Kendo?
  • 或者......如何让Kendo DataSource正确地序列化Filter对象(单独)?

要么会这样做。

当前数据来源: 我决定将READ设置为Ajax调用...

var dataSource = new kendo.data.DataSource({
                                transport: {
                                    read: that.on.read.dataSource
                                    }
                                });

ddlSearchMeter.data('kendoAutoComplete').setDataSource(dataSource);

当前的AJAX设置: 是的,jQuery Ajax很好地处理了序列化......

that.on.read.dataSource = function () {

                                    // Kendo has a cannot serialize complex objects...but jQuery can
                                    return $.ajax({
                                        type: 'POST',
                                        data: JSON.stringify(that.getFilter()),
                                        datatype: 'json',
                                        url: '/compositemeterbladeitem/find',
                                        contentType: 'application/json; charset=utf-8'
                                    })
                                };

当前获取过滤器: 是的,ActionFilter模型解析为一个对象并正确填充;

that.getFilter = function () {

                            var filter = new ActionFilter();
                            filter.Text = ddlSearchMeter.value();
                            filter.Identities = [1,2,3]; //<-- test values ONLY

                            return filter;
                        };

function ActionFilter()
{
    this.Text = new String();
    this.Identities = new Array();
}

当前行动: 是的,执行并正确填充FILTER ...

[HttpPost]
public JsonResult Find(ActionFilter filter)
{
    if (filter == null)
        return ThrowJsonError(HttpStatusCode.BadRequest, "ActionFilter is null", JsonRequestBehavior.AllowGet);

    var application = MeasurementContracts;
    var provider = application.CompositeMeterBladeItemProvider;

    IQueryable<CompositeMeterBladeItem> query = null;

    try
    {
        query = provider.Query();
        query = provider.PublishedMeterFilter(query);
        query = provider.ActionFilter(query, filter);
    }
    catch (Exception ex)
    {
        LogException(ex);

        return ThrowJsonError(HttpStatusCode.BadRequest, EXCEPTION_UNMANAGED, JsonRequestBehavior.AllowGet);
    }

    return Json(query, JsonRequestBehavior.AllowGet);
}

数据返回: 是的,返回数据...

[
  {
    "Id": 10,
    "DeviceId": 10,
    "MeterNumber": "12345678",
    "MeterName": "12345678",
    "RunStatusId": null,
    "EFMMeterPositionId": null,
    "MeterTypeId": null,
    "FluidTypeId": null,
    "AtmosphericPressure": null,
    "TemperatureBase": null,
    "PressureBaseId": 2,
    "FPVMethodId": null,
    "LowFlowCutoff": null,
    "PipeInternalDiameter": null,
    "StaticRange": null,
    "TempRange": null,
    "QualitySourceId": null,
    "DifferentialRange": null,
    "OrificeSize": null,
    "TapLocationId": null,
    "TapTypeId": null,
    "KFactor": null,
    "MeterFactor": null
  }
]
EN

回答 1

Stack Overflow用户

发布于 2018-10-12 13:21:23

剑道的DataSource在后台做的是调用jQuery的ajax。但是,当您想要执行自己的请求时,您必须处理optionsread方法的参数:

transport: {
    read: function (options) {
        // Kendo has a cannot serialize complex objects...but jQuery can
        $.ajax({
            type: 'POST',
            data: JSON.stringify(that.getFilter()),
            datatype: 'json',
            url: '/compositemeterbladeitem/find',
            contentType: 'application/json; charset=utf-8',
            success: function(data) {
                options.success(data);
            }
        })
    };
}

options.success(data);告诉小部件继续使用data

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档