Pregunta

Tengo una vista de árbol que puede estar en cualquier lugar desde el 1 de nivel profundo a cerca de 6. Cada nodo puede ser sólo unas pocas letras o un par de palabras por un total de hasta 20-30 caracteres.

¿Cómo puedo encontrar el mayor ancho de uno de texto del nodo y añadir a su profundidad de compensación para ajustar el ancho de la vista de árbol para que no se vaya a través de mis fronteras?

Si tengo que añadir más información, hágamelo saber.


Editar:

Esto es lo que tengo actualmente. Necesito fijar la anchura de las panelLocations al cargar la página por lo que la vista de árbol puede cargar correctamente en el interior de la misma.

<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>
¿Fue útil?

Solución

Dado que los navegadores web harán que el contenido de otra manera, su única opción para conocer el real Ancho del contenido es el uso de JavaScript para recorrer los elementos del DOM y mida la anchura.

La solución más limpia y más simple es especificar una anchura suficientemente grande para el elemento contenedor, a continuación, especifique un valor de overflow:scroll para permitir el contenido extra-ancha para ser desplazado. Es bastante feo para ver las barras de desplazamiento alrededor de los elementos en la página, pero cuando se está utilizando una estructura de vista de árbol, feo es algo que se vive.

Otros consejos

Puede tomar ventaja del método measureText, en el espacio de nombres de gráficos. Básicamente se le da una copia del tamaño de una cadena supuesta a ser prestados en un determinado tipo de letra y tamaño. Dada una anchura constante para todos los niveles intentation (ya saben, líneas de árboles, botones / iconos: se puede medir de forma estática), se puede asumir necesaria la anchura será la mayor de:

measuredText + (level * indentationWidth)

HTH!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top