2013-01-18 86 views
0

此問題是以下問題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"); 
    } 
} 

與負載的代碼(和註釋的代碼)是另一種嘗試解決這個問題。這種工作(與信息顯示的形式),但主客戶端視圖也重新加載,所以我看到雙網格。

您是否看到我的代碼中應該更改以使此工作正常工作?

非常感謝。

回答

0

與MS的Jazzen Chen幫助我們解決了這個問題。我需要做的正確顯示數據的方法是將getJSON更改爲獲取jquery函數。現在我的表單帶有正確填充的數據,下一個挑戰將是保存數據。

相關問題