ASP.Net Динамически установить ширину TreeView - PullRequest
0 голосов
/ 25 марта 2009

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

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

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


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>

Ответы [ 2 ]

1 голос
/ 01 сентября 2009

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

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

0 голосов
/ 28 августа 2009

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

measuredText + (level * indentationWidth)

НТН!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...