2009-03-25 15 views
0

1レベルの深さから6までのツリービューが得られました。各ノードは、数文字から数えて2〜30文字。ASP.Netツリービューの幅を動的に設定

ノードのテキストの1つの最大幅を見つけて、その深さオフセットを追加して、境界線を通過しないようにツリービューの幅を設定するにはどうすればよいですか?

詳細を追加する必要がある場合は、お知らせください。


編集:

は、ここで私は、現在持っているものです。ツリービューが正しく読み込まれるように、ページの読み込み時にpanelLocationsの幅を設定する必要があります。

<asp:Panel ID="panelLocations" runat="server" style="position:absolute;border:solid 1px #E0E0E0;padding:10px 5px 5px 10px;background-color:#F7F7F7;width:350px;display:none;" > 
    Search: <asp:TextBox ID="textboxLocationSearch" runat="server" AutoCompleteType="disabled" ToolTip="To find a store, type the 4 digit store number (e.g. 0001)" /> 

    <asp:Button ID="buttonFindLocation" runat="server" Text="Find" OnClick="buttonFindLocation_Click" OnClientClick="LocationSelected();" style="width:60px;"/> 

    <input type="button" value="Cancel" onclick="HideLocations();" style="width:60px;"/> 

    <hr /> 

    <asp:TreeView ID="TreeViewLocations" runat="server" OnSelectedNodeChanged="TreeViewLocations_SelectedNodeChanged" NodeIndent="10"></asp:TreeView> 
</asp:Panel> 
+0

CSSやJavaScriptについてはどうですか? 1つまたはすべてを使用していますか? – Myra

答えて

1

Webブラウザは、異なるコンテンツをレンダリングするので、コンテンツの本当幅を見つけるためにあなたの唯一のオプションは、DOM要素を横断し、幅を測定するためにJavaScriptを使用することです。

もっともきれいで簡単な解決策は、コンテナ要素の幅を適切に指定し、幅広いコンテンツをスクロールできるようにoverflow:scrollの値を指定することです。ページ内の要素の周囲にスクロールバーを表示するのはかなり醜いですが、ツリービュー構造を使用しているときは、あなたが住んでいるものが醜いです。

0

Graphics名前空間でMeasureTextメソッドを利用できます。基本的には、特定のフォントとサイズでレンダリングされるはずの文字列のサイズを返します。すべてのintentationレベルに対して一定の幅(あなたが知っている、ツリーライン、ボタン/アイコン:あなたは静的にそれを測定することができます)を考える:

measuredText + (level * indentationWidth) 

HTH、あなたは必要な幅が最大になると仮定することができます!

+0

もしそれがwinformだったらそれは素晴らしいだろう。私は必要に応じてフォントを設定して幅を見つけることができますが、これはウェブサイトです。ブラウザによってテキストが異なるサイズで表示されます。また、ユーザーが現在選択しているスタイルシートは、サーバーが認識できないフォントのサイズを変更することができます... – Miles

関連する問題