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函數兩次。爲什麼?