单击事件后TreeView失去焦点

时间:2010-11-19 16:51:46

标签: c# webforms

我的网络表单中有一个TreeView,我需要它在被选中后保持关注。无论如何我能做到这一点吗?

<asp:TreeView ID="ReportList" runat="server" BorderWidth="0px" BorderColor="0"
  Font-Names="Arial" Font-Size="Small" ForeColor="Blue" SelectedNodeStyle-ForeColor="Red"
  SelectedNodeStyle-VerticalPadding="0" ExpandDepth="0" ImageSet="Arrows" EnableClientScript="False"
  PopulateNodesFromClient="false" OnSelectedNodeChanged="TreeView_Select_Change"
  OnTreeNodePopulate="PopulateNode" EnableViewState="true" BorderStyle="Solid" Height="600px">
    <LevelStyles>
        <asp:TreeNodeStyle ChildNodesPadding="10" Font-Bold="true" Font-Size="9pt" ForeColor="LightBlue" />
        <asp:TreeNodeStyle ChildNodesPadding="5" Font-Bold="true" Font-Size="8pt" />
        <asp:TreeNodeStyle ChildNodesPadding="5" Font-Underline="true" Font-Size="8pt" />
        <asp:TreeNodeStyle ChildNodesPadding="10" Font-Size="8pt" />
    </LevelStyles>
    <Nodes>
        <asp:TreeNode Text="Keyon Reports" SelectAction="Expand" PopulateOnDemand="true" />
    </Nodes>
</asp:TreeView>

1 个答案:

答案 0 :(得分:2)

由于OnSelectedNodeChanged事件的回发,你失去了焦点......当树视图中的值被保留时,像聚焦控件这样的属性不会在视图状态中携带。

在你的页面加载事件中,试试这个:

if (IsPostBack) {
    ReportList.Focus();
}


修改

树视图确实有一个视图状态;页面不跟踪哪个控件具有焦点。

如果您只担心将所选节点保持在视图中,可以通过javascript将元素滚动到视图中。请参阅herehere

如果您想避免回发问题,可以使用javascript使用treeview客户端。一些很好的例子是here