2013-03-04 67 views
1

有一個ASP.net頁面與創建的onclick模式窗口按鈕:ASP.NET - 我如何動態尺寸的JavaScript模態窗口

Dim sURL As String = System.Configuration.ConfigurationManager.AppSettings("APP_Path") & "Detail.aspx" 
btnDone.Attributes.Add("onclick", "javascript:window.showModalDialog('" & sURL & "',null,'status:no;dialogWidth:auto;dialogHeight:auto;dialogHide:true;help:no;scroll:yes;center:yes');return false;") 
我不使用jQuery

。這將啓動一個全新的.aspx頁面,而不是當前頁面中的新圖層。

模式窗口中的數據是綁定到數據表的數據網格。它可以包含5行到50行 - 在運行時無法知道數據表的創建和綁定情況。

<asp:DataGrid ID="grdHeader" runat="server" Width="100%" CssClass="grdGrid" 
Font-Size="12px" Allowpaging="false" GridLines="None" AutoGenerateColumns="true" 
Font-Names="Verdana" CellPadding="0" ShowHeader="false"></asp:DataGrid> 

後面的代碼:

Dim dvHeader as DataView 
Dim dtHeader as DataTable 

dvHeader = dtHeader.DefaultView 
grdHeader.DataSource = dvHeader 
grdHeader.DataBind() 

我想爲模態窗口大小的數據顯示,沒有滾動條。我確定我可以通過Javascript來做到這一點,但Javascript並不是我的強項。

任何幫助將不勝感激!

+0

'showModalDialog()'在哪裏? – jrummell 2013-03-04 21:28:46

回答

1

onload事件添加到彈出窗口的身體,有它調用下面的函數:

function resizeWindow() 
{ 
    var containerElement = document.getElementById('<%=grdHeader.ClientID%>'); 
    window.resizeTo(containerElement.offsetWidth, containerElement.offsetHeight); 
} 

不幸的offsetHeight不考慮在瀏覽器中的元素(如書籤工具欄的高度,網址欄等),所以您確實需要添加一些具體數量以確保顯示所有數據。我認爲這可能是你做你希望做的事的唯一方法,但是根據數據源中的行數來估計窗口的高度(即,每行25行×25像素= 625像素)

編輯: 只是說明一點,您使用showModalDialog實質上打開一個新窗口。除非使用window.open(...)打開窗口,否則上述函數將不起作用,無論如何,這將是最好的選擇,因爲您實際上並未進行真正的模態對話。

+0

非常好!這工作完美,謝謝! – 2013-03-04 22:28:40