这个问题是以下问题的延续,将JSON 数据添加到视图中,不幸的是尚未解决。
在我的主视图中,它有一个带有 2 个控件和用于 flexigrid 的占位符的表单,我在底部添加了以下内容
<div id="add-edit-dialog" style="display: none" title="Add / Edit Client">
@Html.Partial("_ClientForm", Model)
</div>
flexigrid 插件在运行时实例化并添加 3 个按钮:添加、编辑、删除。对于编辑按钮,我需要从服务器获取当前行信息,然后将其显示在表单中。对于添加按钮,我不需要去服务器(我认为)。
这是我当前的编辑按钮代码:
function edit(com, grid) {
$('.trSelected', grid).each(function () {
var id = $(this).attr('id');
id = id.substring(id.lastIndexOf('row') + 3);
currentId = id;
$('#fntype').val('Edit');
var ClientName;
ClientName =$('.trSelected td:eq(2)').text();
var url = '/Client/Edit/' + id ;
$.getJSON(url, function (html) {
// setFormControls(data.Id, data.Role, data.Location, data.JobType,
// data.Description);
// alert(data);
$($dlg).html(html);
});
//location.replace(url);
RunModalDialog("Edit Client: " + ClientName);
});
因此,它将编辑控制器操作并返回相同的局部视图 _ClientForm,其中包含作为模型传递的正确信息。如果我查看 FireBug 中返回的响应结果,我可以看到返回的 HTML 是正确的,并且所有文本框的值中都有正确的信息。
但是,打开的对话框看起来与添加按钮的对话框完全相同 - 换句话说,所有表单控件都是空白的。我不知道出了什么问题以及为什么它没有按我想要的方式工作。
这就是我为 RunModalDialog 所拥有的:
var validator = $("#add-edit-form").validate();
var $dlg = $("#add-edit-dialog").dialog({
autoOpen: false,
show: "blind",
closeOnEscape: true,
resizable: true,
width: 1200,
height: 750,
minHeight: 600,
minWidth: 950,
buttons: {
"Save": function () {
if ($("#add-edit-form").valid()) {
// jobPost.setVals(txtId.val(), txtRole.val(),
// txtLocation.val(), txtJobType.val(),
// txtDescription.val());
$.ajax({
type: 'POST',
//data: JSON.stringify(clientInformation),
url: '/Client/Save',
dataType: 'json',
contentType: 'application/json',
success: function (result) {
// insert new list into grid
$('#flexClients').flexAddData(result);
}
});
$(this).dialog('close');
} else return false;
},
Cancel: function () {
$(this).dialog("close");
clearForm();
if (validator)
validator.resetForm();
}
},
close: function () {
clearForm();
},
open: function () {
//$("#add-edit-dialog").parent().appendTo($("#add-edit-form"));
}
});
function RunModalDialog(title, url) {
if (title) {
$dlg.dialog("option", {"title": title });
}
if (url) {
$dlg.load(url).dialog("option", { "title": title }).dialog("open");
//$dlg.load(url, function () {
// var validator = $("#sform").validate();
// if (validator)
// validator.resetForm();
// $dlg.dialog("option", { "title": title }).dialog("open");
//});
} else {
$dlg.dialog("open");
}
}
带有负载的代码(和注释代码)是解决此问题的另一种尝试。那种工作(与信息一起显示的表单),但主客户端视图也被重新加载,所以我看到了双网格。
你知道我应该在我的代码中改变什么来让这个东西工作吗?
提前非常感谢。