【问题标题】:Error with SelectedNodeChanged Event in WebformWebform 中的 SelectedNodeChanged 事件出错
【发布时间】:2013-09-15 06:12:38
【问题描述】:

我在 DB 中有两个表:

CATALOGBOOK(idCA, nameCA);// kind of book
BOOK(idBOOK, nameBOOK, idCA);// info about one book

从数据库加载数据后的TreeView:

+nameCA1
  -nameBOOK1
  -nameBOOK2
+nameCA2
  -nameBOOK1
  -nameBOOK2
.....

我的网络表单中还有一个文本框。当我选择树节点nameBOOK[j] 时,我使用SelectedNodeChanged Event 在该文本框中显示书名。 SelectedNodeChanged 事件在第一个 nameCA[1] 上运行良好,但是当我在 nameCA[2],nameCA[3],... 中选择树节点 nameBOOK[j] 时出现错误

我想将数据从 DB 加载到 TreeView:

+nameCA1
  -nameBOOK1
  -nameBOOK2
+nameCA1
  -nameBOOK1
  -nameBOOK2
.....

将数据从 DB 加载到 TreeView 的功能:

protected void Page_Load(object sender, EventArgs e)
{
    LoadTree();
}

private void LoadTree()
{
    TreeView1.Nodes.Clear();
    string sql = "select * from CATALOGBOOK";
    DataTable catalog = l.EXECUTEQUERYSQL(sql);
    for (int i = 0; i < catalog.Rows.Count; i++)
    {
        TreeNode TN = new TreeNode();
        TN.Text = catalog.Rows[i][1].ToString();//type of book
        TreeNodeSelectAction treeNodeSelectAction = TreeNodeSelectAction.None;
        TN.SelectAction = treeNodeSelectAction;
        TreeView1.Nodes.Add(TN);

        string sql1 = "select * from BOOK where idCA=" + catalog.Rows[i][0].toString();
        DataTable book = l.EXECUTEQUERYSQL(sql1);
        for (int j = 0; j < book.Rows.Count; j++)
        {
            TreeNode CN = new TreeNode(book.Rows[j][1].ToString(), book.Rows[j][0].ToString());
            CN.Text = book.Rows[j][1].ToString();//name of book
            CN.Value = book.Rows[j][0].ToString();//id of book
            TN.ChildNodes.Add(CN);
        }
    }
}//end of loadtree();

public void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
    this.TextBox1.Text = TreeView1.SelectedNode.Value.ToString();
}

我遇到的问题是:this.TextBox1.Text = TreeView1.SelectedNode.Value.ToString();

 <asp:TreeView OnSelectedNodeChanged="TreeView1_SelectedNodeChanged" ID="TreeView1"  runat="server" ImageSet="Simple" 
                    Width="183px">
                        <HoverNodeStyle BorderStyle="Inset" />
                        <LeafNodeStyle Font-Italic="True" Font-Size="Smaller" />
                        <LevelStyles>
                            <asp:TreeNodeStyle Font-Bold="True" Font-Underline="False" />
                            <asp:TreeNodeStyle Font-Underline="False" />
                            <asp:TreeNodeStyle Font-Italic="True" Font-Underline="False" />
                        </LevelStyles>
                        <SelectedNodeStyle Font-Overline="False" Font-Underline="True" />
                    </asp:TreeView> 

有什么错误吗???

【问题讨论】:

    标签: c# asp.net webforms treeview


    【解决方案1】:

    在页面加载和回发时加载项目,您不需要再次加载它,如果您在每次页面加载时重新加载它,您将丢失选定的值

      protected void Page_Load(object sender, EventArgs e)
       { 
           if(!Page.IsPostBack)
                  LoadTree();
       }
    

    【讨论】:

    • Damith:我将 TreeView.collapseAll() 设置为默认值;当我单击树节点-> 页面加载和选定节点时,所有节点再次折叠。我只想关闭选定节点以外的其他节点?怎么样?
    • @VyClarks 你最好提出新问题
    猜你喜欢
    • 2010-12-12
    • 2023-03-13
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    相关资源
    最近更新 更多