ASP.Net动态设置TreeView的宽度

时间:2009-03-25 20:29:29

标签: asp.net treeview width

我有一个树视图,可以是从1级深到近6的任何位置。每个节点可以只有几个字母或几个单词,总计最多20-30个字符。

如何找到其中一个节点文本的最大宽度并添加其深度偏移量以设置树视图的宽度,以便它不会通过我的边界?

如果我需要添加更多信息,请与我们联系。


编辑:

这是我目前得到的。我需要在页面加载时设置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>

2 个答案:

答案 0 :(得分:1)

由于网络浏览器会以不同方式呈现内容,因此查找内容真实宽度的唯一选择是使用javascript遍历DOM元素并测量宽度。

最简洁和最简单的解决方案是为容器元素指定适当大的宽度,然后指定值overflow:scroll以允许滚动超宽内容。看到页面中元素周围的滚动条非常难看,但是当你使用树视图结构时,丑陋就是你的生活。

答案 1 :(得分:0)

您可以在Graphics命名空间中利用MeasureText方法。基本上它会返回一个字符串的大小,该字符串应该以特定的字体和大小呈现。给定每个意图级别的恒定宽度(您知道,树线,按钮/图标:您可以静态地测量它),您可以假设所需的宽度将是最大的:

measuredText + (level * indentationWidth)

HTH!