Итак, я работаю над изучением Kendo, чтобы приблизить нашего работодателя к покупке нескольких лицензий для нашей новой программы веб-разработки.У меня есть 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).Здесь он соответствует модели выше, за исключением того, что свойство projectCoderNavigation также включает projectTime, Tasks и повтор проектов.
![Model data returned from server](https://i.stack.imgur.com/P39Wv.png)
Когда я нажимаю кнопку добавления новой записи, данные модели корректно обновляются с пустыми данными.
![model data is updated with blank data correctly](https://i.stack.imgur.com/E2vnq.png)
Однако после нажатия кнопки «Сохранить» модель меняется, и добавляется новый объект «adName», который соответствует источнику данных для раскрывающегося списка, используемого для выбора.ProjectCoder остается 0, projectCoderNavigation остается нулевым, а другие поля обновляются.
![after save - before actual POST](https://i.stack.imgur.com/xUG4G.png)
И, конечно, POST не работает из-за недопустимого состояния модели.
![fiddler fail input not valid](https://i.stack.imgur.com/9ayRc.png)
EDIT
Это функция для заполнения редактора 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#" },
Примечание.
Мне удалось отработать его, чтобы я назначил projectCoder через карту параметров, но все еще имею пустое свойство projectCoderNavigation и нежелательный объект "adName" в 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;
}
}
РЕДАКТИРОВАТЬ 2
Итак, я перешел к тому, где я могу убедиться, что запрос достигает API, и, вероятно, закрою этот вопрос, но сначала я предоставлю больше информации.
Когданажата кнопка сохранения, API получает запрос POST.Однако данные из полезной нагрузки не используются данным методом.
![Mutliple signatures I've attempted](https://i.stack.imgur.com/CI0WE.png)
Ответ - HTTP-код 500, так как модель была нулевой, а вставка завершилась неудачно из-за ограничений внешнего ключа.
Оператор INSERT вступил в конфликт с ограничением FOREIGN KEY "FK_att_projects_att_Users".Конфликт произошел в базе данных «ASSIST_TimeTracking», таблице «dbo.att_users», столбце «id».Заявление было прекращено.
![request headers from chrome dev tools](https://i.stack.imgur.com/QcHpE.png)