2015-11-13 58 views
0

我已查看將值填充到表格中的位置。有一個鏈接可以生成另一個表格(部分視圖),該表格需要顯示在鏈接被點擊的行的下方。如下圖所示,當查看屬性從thirs行中被點擊時,結果顯示在第一行的下方。在正確的表格行中渲染部分視圖

腳本查看

<tr> 
    <td data-toggle="tooltip" title="@item.DescriptionDE">@Html.ActionLink(item.OptionName, "ViewOptionValues", "OptionValues", new { id = item.OptionID }, null)</td> 
    <td>@Html.ActionLink(@item.TechnicalCharacteristic.TCName, "ViewTcSet", "TechnicalCharacteristics", new {id = item.TechnicalCharacteristicID },null)</td> 
    <td class="links"> 
     @Ajax.ActionLink("View Properties", "ViewOptionvalues", "Options", new { id = item.OptionID }, new AjaxOptions { UpdateTargetId="ViewProperty"})| 
     @Html.ActionLink("Edit", "Edit", new { id = item.OptionID })| 
     @Html.ActionLink("Details", "Details", new { id = item.OptionID })| 
     @Html.ActionLink("Delete", "Delete", new { id = item.OptionID }) 
    </td> 
</tr> 

<tr style="display:none;overflow-x:auto" class="View"><td colspan="3"><div id="ViewProperty" style="overflow:auto"></div></td></tr> 

Sample output

+1

'$(本).closest( 'TR')。接下來(「TR ').toggle()'並刪除'id =「ViewProperty」 - 你生成了具有重複'id'屬性的無效html,但是你還需要修改'Ajax.ActionLink()'(只需使用jquery/ajax) –

+0

現在正確的'tr'正在切換。但視圖沒有被渲染。 'Ajax.ActionLink()'中的UpdateTargetID的值都不起作用。我現在不使用Ajax/Jquery嗎? – Vini

+0

不,我的意思是'$ .ajax()'或簡單的'$ .load()'(擺脫過時的'Ajax.ActionLink()'方法))。由於重複的'id'屬性,您的html無效。 'UpdateTargetId =「ViewProperty」}'只更新第一個具有'id =「ViewProperty」'和$('。View')的元素toggle();'切換所有行 –

回答

1

你生成無效的HTML,因爲你有<div id="ViewProperty" ...>多個元素的

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.links').click(function() { 
     $('.View').toggle(); 

    }); 
}); 
</script> 

有關部分。你的Ajax.ActionLink()有選項UpdateTargetId="ViewProperty",它只會返回第一個元素id="ViewProperty"(不是下一行中的元素)。最後,在您的腳本中,$('.View').toggle();使用class="View"切換所有行。

刪除(過時)Ajax.ActionLink()方法,並與

<tr> 
    .... 
    <td> 
    <a href="#" class="view" data-id="@item.OptionID">View Properties<a> | @Html.ActionLink(... 
    </td> 
</tr> 

<tr style="display:none;overflow-x:auto"><td colspan="3"><div style="overflow:auto"></div></td></tr> 

更換然後修改你的腳本

var url = '@Url.Action("ViewOptionvalues", "Options")'; 
$('.view').click(function() { 
    var nextRow = $(this).closest('tr').next('tr'); 
    $.get(url, { id: $(this).data('id') }, function(response) { 
    nextRow.find('div').html(response); 
    nextRow.toggle(); 
    }); 
}) 
+0

感謝您的答覆。只有'tr'被切換。我調試並調用函數。並返回View。 – Vini

+0

你的意思是控制器方法返回一個'View'?它應該返回一個'PartialView'並且看到更新 - 它應該是'.find('div')'不是'.children('div')' –

+0

是的。有效。在部分視圖和視圖上工作。非常感謝。 – Vini