2013-05-06 64 views
1

我想根據主機頁面發送的參數動態加載模態窗口。主機頁面將在表格中具有一組編輯鏈接。點擊任何編輯鏈接應打開一個窗口,其中包含基於發送的行ID的相應數據。下面的代碼不起作用。我需要什麼樣的變化,使以至於當我點擊編輯鏈接,我可以給一個rowid到「dialogMsg」 DIV層,使得數據可以動態地放置在它使用jqueryui在mvc 4中打開模態窗口使用jqueryui

<div id="dialogMsg" title="Editing " + StudentFirstName > 
      Show other student details here 
</div> 

<table > 
<tr> 
    <td> 
     James 
    </td> <td><a href="#" id="editlink">Edit</a></td> 
</tr> 
<tr> 
    <td> 
     John 
    </td> <td><a href="#" id="editlink">Edit</a></td> 
</tr> 
<tr> 
    <td> 
     Doe 
    </td> <td><a href="#" id="editlink">Edit</a></td> 
</tr> 
</table> 

<script type="text/javascript"> 

    $(document).ready(function() 
    { 
     $("#dialogMsg").dialog({ 
      autoOpen: false, 
      height: 300, 
      width: 350, 
      modal: true, 
      buttons: { 
       "Create an account": function() { 
        var bValid = true; 

        $(this).dialog("close"); 

       }, 
       Cancel: function() { 
        $(this).dialog("close"); 
       } 
      } 

     }); 


     $('#editlink') 
     .click(function() { 
      $('#dialogMsg').dialog('open'); 
     }); 
    }); 
</script> 
+0

您可以從部分視圖填充對話框消息,然後使用ajax編輯鏈接。 – lopezbertoni 2013-05-06 21:20:05

+0

看看他的問題:http://stackoverflow.com/questions/15959639/return-partialview-from-jsonresult-actionmethod-back-to-ajax-post-and-display-th/15960456#15960456 – lopezbertoni 2013-05-06 21:25:32

回答

1

我已經做了一些改動您的代碼:

<div id="dialogMsg" title="Editing ">Show other student details here</div> 
<table> 
    <tr> 
     <td>James</td> 
     <td> 
      <a href="#" class="editlink">Edit</a> 
      <input type="javascript" class="personId" value="1" /> 
     </td> 
    </tr> 
    <tr> 
     <td>John</td> 
     <td> 
      <a href="#" class="editlink">Edit</a> 
      <input type="javascript" class="personId" value="2" /> 
     </td> 
    </tr> 
    <tr> 
     <td>Doe</td> 
     <td> 
      <a href="#" class="editlink">Edit</a> 
      <input type="javascript" class="personId" value="2" /> 
     </td> 
    </tr> 
</table> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#dialogMsg").dialog({ 
      autoOpen: false, 
      height: 300, 
      width: 350, 
      modal: true, 
      buttons: { 
       "Create an account": function() { 
        var bValid = true; 

        $(this).dialog("close"); 

       }, 
       Cancel: function() { 
        $(this).dialog("close"); 
       } 
      } 

     }); 


     $('.editlink').click(function() { 
      $('#dialogMsg') 
       .dialog('option', 'title', "Editing " 
        + $(this).closest('tr').find('td:first').text()) 
       .dialog('open'); 

      var personId = $(this).closest('tr').find('.personId').val(); 
      // work it out with the ID here 
     }); 
    }); 
</script> 

變化做:

  1. 移動的標題給JavaScript。您不能像這樣設置標題屬性<div id="dialogMsg" title="Editing " + StudentFirstName >

  2. 更改Edit鏈接的id屬性爲class屬性。對於頁面中的每個元素,id必須是唯一的。

  3. 在JavaScript中設置對話框標題。 $(this).closest('tr').find('td:first').text()).dialog('open');。在這裏,我獲取最近的父代tr標籤並獲取第一個td子標籤的文本。

編輯:

增加了對CSS類ID隱藏字段。該類可以在jQuery select中用於獲取ID。

+0

謝謝。現在顯示標題。我如何傳遞該記錄的行ID?行ID不會顯示在網格上。但我仍然需要將id發送到模態窗口,以便從數據庫中提取記錄細節並將其顯示在模態窗口中。 – user20358 2013-05-07 19:24:59

+0

'$(this).closest('tr')'返回表中選定的行。您可以在ID的每一行都有一個隱藏字段。然後你可以使用'$(this).closest('tr')。find('input [type = hidden]')。val()'來獲得ID。您可以將其保存在一個變量中,並在用戶單擊該按鈕時使用它。 – ManojRK 2013-05-08 08:29:49

+0

謝謝,編輯你的答案,我會把它標記爲正確的..順便說一句,如果該行有多種輸入類型? – user20358 2013-05-12 09:15:47