次のユーザー コントロール マークアップがあるとします。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SearchItem.ascx.cs" Inherits="MyWeb.controls.SearchItem" %>
<div id="container" runat="server" style="height: 100%; width: 100%;">
<div>
<asp:Label ID="lblSearch" runat="server" Text="Search:"></asp:Label>
<br />
<asp:TextBox ID="txtSearch" runat="server"></asp:TextBox>
<input id="btnSearch" type="button" value="Search" onclick="SearchClick(this)" />
</div>
<div>
<asp:Label ID="lblItems" runat="server" Text="Available Items:"></asp:Label>
</div>
<div id="itemContents" runat="server" style="min-height: 50%; width: 100%;border: 1px solid black;">
<asp:ListBox ID="lbxResults" runat="server" SelectionMode="Single" Width="100%" AutoPostBack="True"></asp:ListBox>
</div>
他のすべてのコントロールは既知のサイズであるため、ユーザーコントロールの高さをリストボックスのプレースホルダーの高さと同じにして、高さの違いを埋めたいと思います。役立つ情報:
高さは次の値を持つことができます: 300、400、600 px、したがって、高さの違いを補うためにリストボックスの高さが必要です。
リスト ボックスには 0 ~ 2000 の要素を含めることができます。
プレースホルダーは、div または asp.net タブ コンテナーにすることができます。
テスト目的で、次のことを行いました。
新しいユーザー コントロールを作成します。SearchItem.ascx
たとえば、デフォルトの aspx ページを作成します。
a) ユーザーコントロールを追加 //<%@ Register TagPrefix="uc" TagName="SearchItem" Src="~/Controls/SearchItem.ascx" %>
b) 本文に追加
<form id="form1" runat="server">
<div id="ChangeMyHeight" style="height: 300px; width: 30%; float: left;">
<uc:SearchItem ID="AvailableItems" runat="server">
</uc:SearchItem>
</div>
</form>
コンテナ div の高さを 500, 600.(ChangeMyHeight) に変更すると、次のようになります。
現在の動作:
- リストボックスのサイズが適切に変更されていません。(身長差を埋める)
予想される動作:
- リストボックスは適切にサイズ変更され、高さの違いを埋めています。(Winforms でのドッキングのように)
私の好みは css/jquery ソリューションですが、コード ビハインドも同様です (高さプロパティを使用して子コントロールを設定することを考えていました)。
ノート:
- サンプル マークアップでは、簡潔にするためにスタイルを使用しています。
- サンプル マークアップでは、デモ用に一部の値がハード コードされています (したがって、デモは高さ 300 ピクセルで動作しますが、他の値では動作しません)。必要に応じて style/html を自由に変更してください。
- 環境:VS2010/.NET 4.0/jQuery 最新。
- ブラウザ:FF、IE7/8/9