2009-03-25 4 views
0

У меня есть древовидное представление, которое может быть где угодно от 1 уровня до почти 6. Каждый узел может состоять всего из нескольких букв или нескольких слов в сумме до 20-30 символов ,ASP.Net Динамически заданная ширина TreeView

Как найти наибольшую ширину одного из текста узла и добавить его смещение по глубине, чтобы установить ширину древовидной структуры, чтобы она не проходила через мои границы?

Если мне нужно добавить дополнительную информацию, сообщите мне.


Edit:

Вот что я в настоящее время есть. Мне нужно установить ширину панелиLocations на загрузку страницы, чтобы древовидное представление могло правильно загрузиться внутри нее.

<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? Используете ли вы один или все из них? – Myra

ответ

1

Поскольку веб-браузеры будут визуализировать контент по-другому, единственный вариант, чтобы узнать ширину содержимого , это использовать javascript для перемещения элементов DOM и измерения ширины.

Самое чистое и простое решение состоит в том, чтобы указать подходящую большую ширину для элемента контейнера, а затем указать значение overflow:scroll, чтобы разрешить прокрутку сверхширокого содержимого. Это довольно уродливо видеть полосы прокрутки вокруг элементов на странице, но когда вы используете структуру древовидной структуры, уродливое - это то, с чем вы живете.

0

Вы можете использовать метод MeasureText в пространстве имен Graphics. В основном это возвращает вам размер строки, которая должна отображаться в определенном шрифте и размере. Учитывая постоянную ширину для каждого уровня intentation (вы знаете, линии дерева, кнопки/иконки: вы можете измерить его статически), то можно предположить, необходимую ширину будет самым крупным из:

measuredText + (level * indentationWidth) 

НТН!

+0

Было бы здорово, если бы это была победа. Я бы мог установить шрифт так, как мне было нужно, и найти ширину, но это веб-сайт. Различные браузеры показывают текст как разные размеры. Кроме того, таблица стилей, которую пользователь в данный момент выбрал, может изменить размер шрифта, о котором сервер не знал бы ... – Miles