1

DB に 2 つのテーブルがあります。

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

DB からデータをロードした後の TreeView:

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

Webフォームにもテキストボックスがあります。SelectedNodeChanged Eventtreenode を選択したときに、そのテキストボックスに本の名前を表示するために使用しますnameBOOK[j]。SelectedNodeChanged イベントは最初の で正常に機能しましたnameCA[1]が、ツリーノードを選択するとエラーが発生しnameBOOK[j]ましたnameCA[2],nameCA[3],...

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> 

間違いはないですか???

4

1 に答える 1

0

ページの読み込み時とポストバック時にアイテムを読み込む 再度読み込む必要はありません。ページの読み込みごとに再度読み込むと、選択した値が失われます

  protected void Page_Load(object sender, EventArgs e)
   { 
       if(!Page.IsPostBack)
              LoadTree();
   }
于 2013-09-15T06:23:51.230 に答える