2015-05-19 21 views
0

我有一個對話框,顯示項目的列表中的WebGrid:jQuery的對話跳躍到整個頁面的瀏覽器

@if (Model.ItemsByLocation != null) 
{ 
    @grid.GetHtml(
    tableStyle: "table", 
    fillEmptyRows: true, 
    headerStyle: "header", 
    footerStyle: "footer", 
    mode: WebGridPagerModes.All, 
    firstText: "<<First", 
    previousText: "<Prev", 
    nextText: "Next>", 
    lastText: "Last>>", 
    htmlAttributes: new { id = "grid"}, 
    columns: new [] 
    { 
     //grid.Column("ItemNumber", "Item"), 
     grid.Column(header: "Item Number", format: (item) => Html.ActionLink((string)item.ItemNumber, "ShowItem", "Inventory", new { id = item.ItemNumber.ToString()}, new {onclick = "GetItemDetails(" + item.ItemNumber.ToString() + ");"})), 
     grid.Column("ItemDescription","Desc"), 
     grid.Column("ItemSerialNumber","SN"), 
     grid.Column("itemLocationSite","Site"), 
     grid.Column("ItemLocationBuilding","Bldg"), 
     grid.Column("ItemLocationFloor","Flr"), 
     grid.Column("ItemLocationOffice","Off"), 
     grid.Column("ItemTypeDescription","Type"), 
     grid.Column("FirstName","First"), 
     grid.Column("LastName","Last") 

    }) 

} 
else { 
<p><i>No item to display</i></p> 
} 

這是從另一個頁面的對話本身 - 這個沒問題。當我點擊鏈接上的JS調用函數:

function GetItemDetails(id) { 
    var test = id; 
    $.ajax({ 
     type: 'GET', 
     url: '@Url.Action("ShowItem")?id=' + id, 
     success: function (data) { 
      $("#divDetails").html(data); 
      $("#divDetails").dialog("open"); 
      $("#divDetails").show(); 
     } 
    }); 
    return false; 
} 

這與第一個對話框頂部的另一個對話框響應,但只有一兩秒鐘,然後雙方對話結束和第二個對話框中的數據在瀏覽器中全屏顯示。任何想法,爲什麼這是?

這是細節的對話框:

$(document).ready(function() { 
    //debugger; 

    $("#divDetails").dialog({ 
     autoOpen: false, 
     width: 'auto', 
     resizable: true, 
     title: 'Item Details', 
     modal: true, 
     closeOnEscape: false, 
     show: { 
      effect: 'drop', direction: 'up' 
     }, 
     buttons: { 
      "OK": function() { 

       $(this).dialog("close"); 
      } 
     } 
    }).prev("ui-dialog-titlebar").css("background", "#FF3300"); 
    $(".dialog").click(function() { 
     $("#divDetails").dialog("open"); 
    }); 

}); 

<div id="divDetails" style="display:none" class="ui-dialog-titlebar ui-widget-header"> 

</div> 

我把一些斷點代碼,並顯示在第二個對話框後,控制器指數函數被調用。這是如何發生的?它會這樣做,如果我從鏈接中刪除ShowItem,但是如果我將它放回來,它會調用ShowItem函數兩次。爲什麼?

回答

0

我仍然不知道問題是什麼,但如果我改變的WebGrid列這一點,它工作得很好:

grid.Column(header: "Item Number", format:@<a href="#" onclick="GetItemDetails(@item.ItemNumber.ToString());return false;">@item.ItemNumber.ToString()</a>), 
相關問題