1

モーダル ウィンドウ onclick を作成するボタンを含む ASP.net ページがあります。

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 は実際には私の得意分野ではありません。

どんな助けでも大歓迎です!

4

1 に答える 1

1

ポップアップ ウィンドウの本文に onload イベントを追加し、次の関数を呼び出します。

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

残念ながら、offsetHeight はブラウザー内の要素 (ブックマーク バー、URL バーなど) の高さを考慮していないため、すべてのデータが確実に表示されるように具体的な量を追加する必要があります。ただし、データ ソースの行数に基づいてウィンドウの高さを推定する以外に、これがやりたいことを実行できる唯一の方法であると思います (つまり、25 行 x 1 行あたり 25 ピクセル = 625 ピクセル)。

編集: 注意してください。showModalDialogを使用して、基本的に新しいウィンドウを開きます。window.open(...) を使用してウィンドウを開かない限り、上記の関数は機能しません。これは、実際には真のモーダル ダイアログを作成していないため、とにかく最良のオプションです。

于 2013-03-04T21:21:34.857 に答える