0

私はツリービューを持っています:

 <asp:TreeView ID="testtree1" runat="server" OnSelectedNodeChanged="testtree1_SelectedNodeChanged">
     <Nodes>
        <asp:TreeNode Expanded="False" Text="Tests" Value="Tests"></asp:TreeNode>
     </Nodes>
 </asp:TreeView>

私は.csファイルに次のコードを持っています:

protected void testtree1_SelectedNodeChanged(object sender, EventArgs e)
    {
        if (testtree1.SelectedNode.Text == "Tests")
        {
            con.Open();
            SqlCommand cmdd = new SqlCommand("select count(Name) from TypeOfWork");
            cmdd.Connection = con;
            int idcount = Convert.ToInt32(cmdd.ExecuteScalar());
            SqlCommand cmd = new SqlCommand("select Name from TypeOfWork");
            cmd.Connection = con;
            string[] nid = new string[idcount];
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);

            if (ds.Tables[0].Rows.Count > 0)
            {
                for (int i = 0; i < idcount; i++)
                {
                    nid[i] = ds.Tables[0].Rows[i]["Name"].ToString().Trim();
                    testtree1.Nodes.Add(new TreeNode(nid[i]));
                }
            }
        }
        else
        {
            string tstr = testtree1.SelectedNode.Text;
            con.Open();
            SqlCommand cmd = new SqlCommand("select TypeOfWorkID from TypeOfWork where Name='" + tstr + "'");
            cmd.Connection = con;
            int tid = Convert.ToInt32(cmd.ExecuteScalar());

            SqlCommand cmdd = new SqlCommand("select count(Name) from CategoryLevel1 where TypeOfWorkID='" + tid + "'");
            cmdd.Connection = con;
            int idcount = Convert.ToInt32(cmdd.ExecuteScalar());
            SqlCommand cmd1 = new SqlCommand("select Name from CategoryLevel1 where TypeOfWorkID='" + tid + "'");
            cmd1.Connection = con;
            string[] nid = new string[idcount];
            SqlDataAdapter da = new SqlDataAdapter(cmd1);
            DataSet ds = new DataSet();
            da.Fill(ds);
            if (ds.Tables[0].Rows.Count > 0)
            {
                for (int i = 0; i < idcount; i++)
                {

                    nid[i] = ds.Tables[0].Rows[i]["Name"].ToString().Trim();
                    TreeNode child1 = new TreeNode();
                    child1.Text = nid[i];
                    testtree1.Nodes.Add(child1);
                }
            }
        }



    }

ここでの問題は、正しいデータを取得するツリーを取得していますが、本来あるべきツリー ビューを取得していないことです。

ルートはTests私がそれをクリックしているときですCivilRVI、それらはツリービューとしてではなく、tests

そして、私がクリックしているとき、CivilまたはRVIその子ノードが通常のツリーとしてではなく全体の下に来ているとき...どうすればよいですか?

どんな助けでも

4

1 に答える 1

1

ルート ノードに追加するのではなく、現在選択されているノードの childNodes コレクションに追加する必要があります。

protected void testtree1_SelectedNodeChanged(object sender, EventArgs e)
{
    var selectedNode = (sender as System.Web.UI.WebControls.TreeView).SelectedNode;
    selectedNode.ChildNodes.Add(new TreeNode('Your TreeNode here'));
}

あなたのコードでは、代わりに:

testtree1.Nodes.Add(new TreeNode(nid[i]));

使用する:

(sender as System.Web.UI.WebControls.TreeView).SelectedNode.ChildNodes.Add(new TreeNode(nid[i]));
于 2012-11-20T11:56:01.670 に答える