2009-03-25 5 views
0

나는 1 레벨에서 6까지의 모든 트리 뷰를 가질 수 있습니다. 각 노드는 단지 몇 글자이거나 총 20-30 자의 단어 일 수 있습니다 .ASP.Net TreeView의 너비를 동적으로 설정

노드의 텍스트 중 가장 큰 너비를 찾고 트리의 너비를 설정하기 위해 심도 오프셋을 추가하려면 어떻게해야합니까? 테두리를 통과하지 못하도록하려면 어떻게해야합니까?

자세한 정보를 추가해야하는 경우 알려 주시기 바랍니다.


편집 :

여기 내가 현재 가지고거야. 트리보기가 올바르게로드 될 수 있도록 페이지로드시 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 또는 자바 스크립트? 하나 또는 모두를 사용하고 있습니까? – Myra

답변

1

웹 브라우저는 콘텐츠를 다르게 렌더링하므로 내용의 너비가 인 유일한 옵션은 자바 스크립트를 사용하여 DOM 요소를 탐색하고 너비를 측정하는 것입니다.

가장 간단하고 간단한 솔루션은 컨테이너 요소에 대해 적절한 너비를 지정한 다음 여분의 와이드 콘텐츠를 스크롤 할 수 있도록 overflow:scroll 값을 지정하는 것입니다. 페이지의 요소 주위에 스크롤 막대를 표시하는 것은보기 흉하지만 트리 뷰 구조를 사용하면 추한 것은 함께 사는 것입니다.

0

그래픽 네임 스페이스의 MeasureText 메서드를 활용할 수 있습니다. 기본적으로 그것은 특정 글꼴 및 크기로 렌더링되어야하는 문자열의 크기를 돌려줍니다. 모든 intentation 수준에 대한 일정한 폭을 감안할 때

measuredText + (level * indentationWidth) 

HTH : 당신의 가장 큰 것입니다 필요한 폭을 가정 할 수있다, (당신이 나무 라인, 버튼/아이콘을 알고 당신이 정적을 측정 할 수 있습니다)!

+0

winform이라면 멋질 것입니다. 나는 내가 필요로하고 너비를 찾을 수있는 폰트를 설정할 수 있었지만 이것은 웹 사이트 다. 브라우저마다 텍스트가 다른 크기로 표시됩니다. 또한 사용자가 현재 선택한 스타일 시트는 서버가 알지 못하는 글꼴 크기를 변경할 수 있습니다. – Miles

관련 문제