2013-03-04 36 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