0

这真的让我很沮丧。我觉得我做的一切都是正确的,但我的网格不会显示任何东西。我知道我正确地发回了数据,因为我可以在 Fiddler 中看到它,而且它的格式与我的一个有效示例完全相同。

来自 Fiddler 的数据看起来像这样(JSON,正如预期的那样,带有“d”,但数组中有 200 个对象,这里我只显示一个。)

{"d":
    [{"__type":"DisputeProjectManagerModel.DISP_PROJECT_NAME_MASTER",
     "PROJECT_ID_NUMBER":241,
     "PROJECT_NAME":"AT\u0026T Settlement - Stake date payment",
     "CATEGORY":null,
     "CONTRIBUTION":"N",
     "WIN_RATE":"N",
     "SETTLEMENT":"N",
     "DESCRIPTION":null,
     "JUSTIFICATION":null,
     "ACTIVE":"N",
     "MODIFIED_USER":"SYSTEM",
     "MODIFIED_DATE":"\/Date(1377744633000)\/",
     "EntityState":2,
     "EntityKey":{"EntitySetName":"DISP_PROJECT_NAME_MASTER","EntityContainerName":"DisputeProjectManagerEntities","EntityKeyValues":[{"Key":"PROJECT_ID_NUMBER","Value":241}],
     "IsTemporary":false}
    }]
} 

这是我的网格的代码。这是我尝试过的第 50 个版本。

$(document).ready(function () {
    setupGrid();
});

function setupGrid() {
    alert("click OK to make Ajax call");

    $("#projectManagerGrid").kendoGrid({
        columns: ["PROJECT_ID_NUMBER", "PROJECT_NAME", "CATEGORY", "CONTRIBUTION", "WIN_RATE", "SETTLEMENT", "DESCRIPTION", "JUSTIFICATION", "ACTIVE", "MODIFIED_USER", "MODIFIED_DATE"],
        dataSource: {
        type: "odata",
            transport: {
                read: {
                    type: "POST",
                    url: "/special_pages/DisputeProjectManager.aspx/getProjects",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (response) { alert('WORKED!'); },
                    error: function (xhr, textStatus, errorThrown) { handleAjaxError(xhr, textStatus, errorThrown); }
                },
                parameterMap: function (data, type) {
                    return kendo.stringify(data);
                }
            }
        },
        schema: {
            data: "d",
            columns: ["PROJECT_ID_NUMBER", "PROJECT_NAME", "CATEGORY", "CONTRIBUTION", "WIN_RATE", "SETTLEMENT", "DESCRIPTION", "JUSTIFICATION", "ACTIVE", "MODIFIED_USER", "MODIFIED_DATE"],
            model: {
                id: "PROJECT_ID_NUMBER",
                fields: {
                    "PROJECT_ID_NUMBER": { type: "number", editable: false },
                    "PROJECT_NAME": { type: "string", editable: true },
                    "CATEGORY": { type: "string", editable: true },
                    "CONTRIBUTION": { type: "string", editable: true },
                    "WIN_RATE": { type: "string", editable: true },
                    "SETTLEMENT": { type: "string", editable: true },
                    "DESCRIPTION": { type: "string", editable: true },
                    "JUSTIFICATION": { type: "string", editable: true },
                    "ACTIVE": { type: "string", editable: true },
                    "MODIFIED_USER": { type: "string", editable: false },
                    "MODIFIED_DATE": { type: "date", editable: false }
                }
            }
        },
        editable: {
            update: true,
            create: true,
            destroy: false
        },
        toolbar: ["create", "save", "cancel"]
    });
}

这是我的页面方法,这很好用:

[WebMethod]
public static List<DISP_PROJECT_NAME_MASTER> getProjects() {
    try {
        using (DisputeProjectManagerEntities ctx = new DisputeProjectManagerEntities()) {
            var q = (from e in ctx.DISP_PROJECT_NAME_MASTER orderby e.MODIFIED_DATE descending select e);
            return q.ToList<DISP_PROJECT_NAME_MASTER>();
        }
    } catch {
        return null;
    }
}

我不只是在这里寻找代码修复。如果您能解释这是怎么回事,我将不胜感激。我花了很多时间阅读文档,我怀疑这与我的模型和架​​构错误有关,但是关于这些字段的文档没有足够的细节。

一件非常奇怪的事情是,当我运行 Ajax 调用时,两个回调函数都没有运行。你可以看到我有一个错误和成功的回调——这些都没有运行。我可以看到正在进行的 Ajax 调用和返回的数据。我希望这些功能中的一个或另一个能够运行 - 我的意思是,它必须是成功或错误,对吧?

4

1 回答 1

1

schema定义应该是定义的一部分dataSource。即schema配置应该嵌套在dataSource配置下。

于 2013-08-29T16:32:28.210 回答