所以我正在努力学习剑道,努力推动我们的雇主更接近为我们新的网络发展议程购买一些许可证。 我在内部Web服务器上设置并运行Core2 API,并尝试使用它来为另一个应用程序创建管理页面。
导致这种情况(如下所述)的原因是什么,以及处理它或我尝试的最佳方法是什么?
设置网格和显示已完成,但在将数据正确地返回API时遇到问题。 这似乎是一个奇怪的问题,与下拉列表作为2个字段的数据源有关。
首次加载页面时,模型与数据源模式中定义的模型匹配。
schema: {
model: {
id: "id",
fields: {
projectName: { validation: { required: true, max: 150 } },
projectDescr: { validation: { required: true, max: 500 } },
projectOwner: { validation: { required: true, max: 125 } },
projectCoder: {type:"number", required:true, validation: { required: true }, from:"projectCoder"},
projectCoderNavigation: { from: "projectCoderNavigation", nullable:false},
projectEstHours: {type: "number", validation: {min: 0}},
statusId: { validation: { required: true }, from:"statusId"},
statusReason: { validation: { max: 125 },from:"statusReason" }
}
}
Kendo网格列
columns: [
{field: "projectName", title: "Project Name"},
{field: "projectDescr", title: "Description", editor: descrEditor},
{field: "projectOwner", title: "Project Owner"},
{field: "projectCoder", title: "Programmer", editor: programmerDDL, template:"#= projectCoderNavigation.adName#" },
{field: "statusId", title:"Status", editor: statusDDL, template:"#= statusReason#"},
{field: "projectEstHours", title: "Estimated Hours"}
从服务器返回的模型数据(chrome dev工具)。这里它匹配上面的模型,但projectCoderNavigation属性还包括projectTime,Tasks和项目的重复。
单击“添加新记录”按钮时,模型数据将正确更新为空白数据。
但是,一旦我点击保存,模型就会更改,并添加一个新对象“adName”,并匹配用于选择的下拉列表的数据源。 projectCoder保持为0,projectCoderNavigation保持为null,其他字段也会更新。
当然,由于模型状态无效,POST失败。
这是填充DDL编辑器的功能。
function programmerDDL(container, options) {
// var input = $("<input/>");
//input.attr("projectCoderNavigation.adName",options.field);
// input.append(container);
$('<input type="text" class="k-input k-textbox" name="adName"/>')
.appendTo(container)
.kendoDropDownList({
autoBind: false,
//valuePrimitive: true,
dataTextField: "adName",
dataValueField: "id",
dataSource: usersListDs,
text: "Select someone"
});
}
这是将编辑器分配给下拉列表。
{field: "projectCoder", title: "Programmer", editor: programmerDDL,
template:"#= projectCoderNavigation.adName#" },
我已经设法解决了这个问题,因此我通过参数map分配了projectCoder,但仍然有空的projectCoderNavigation属性和不需要的&#34; adName&#34; options.models中的对象。
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
console.log("model: "+options.models);
if (operation === "create") {
options.models[0].projectCoder = options.models[0].adName.id;
}
console.log(options.models);
console.log(kendo.stringify(options.models));
return options.models;
}
}
所以我已经进展到可以验证请求是否已到达API的位置,可能会关闭此问题,但我会先提供更多信息。
单击“保存”时,API会收到POST请求。但是,该方法不使用来自有效载荷的数据。
响应是HTTP代码500,因为模型为null并且插入因外键约束而失败。
INSERT语句与FOREIGN KEY约束冲突 &#34; FK_att_projects_att_Users&#34 ;.冲突发生在数据库中 &#34; ASSIST_TimeTracking&#34;,table&#34; dbo.att_users&#34;,column&#39; id&#39;。该 声明已被终止。