此問題是以下問題Add JSON data to the view的延續,不幸的是,這個問題最終還是未解決。從服務器獲取數據並在編輯表格中顯示
以我主視圖,其具有與2點的控制和佔位符flexigrid形式添加以下在底部
<div id="add-edit-dialog" style="display: none" title="Add/Edit Client">
@Html.Partial("_ClientForm", Model)
</div>
的flexigrid pluglin實例在運行時間,並增加了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");
}
}
與負載的代碼(和註釋的代碼)是另一種嘗試解決這個問題。這種工作(與信息顯示的形式),但主客戶端視圖也重新加載,所以我看到雙網格。
您是否看到我的代碼中應該更改以使此工作正常工作?
非常感謝。