当父和子在同一个表中时,如何将数据从数据库加载到TreeView

时间:2016-06-17 08:22:46

标签: c# mysql treeview

我在Database中有LearningObject表,其中包含(ID,级别,主题,类型)。 Level字段包含(一,二,三)。每个级别都有很多科目。 我需要将数据从此数据库加载到TreeView:每个级别表示为父级,每个主题表示在适当级别下的子级。 下面的代码跟我没有用来实现我的想法。 我有这个错误  (类型' MySql.Data.MySqlClient.MySqlException'发生在MySql.Data.dll中,但未在用户代码中处理 附加信息:未知栏'一个'在' where子句')

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

public void fill_Tree2()
{
    DataSet PrSet = PDataset("Select DISTINCT level from learningobject");
    TreeView1.Nodes.Clear();
    foreach (DataRow dr in PrSet.Tables[0].Rows)
    {
        TreeNode tnParent = new TreeNode();
        tnParent.Text = dr["level"].ToString();
        tnParent.Value = dr["level"].ToString();
        tnParent.PopulateOnDemand = true;
        tnParent.ToolTip = "Click to get Child";
        tnParent.SelectAction = TreeNodeSelectAction.SelectExpand;
        tnParent.Expand();
        tnParent.Selected = true;
        TreeView1.Nodes.Add(tnParent);
        FillChild(tnParent, tnParent.Value);
    }
}

public void FillChild(TreeNode parent, string ParentID)
{
    DataSet ds = PDataset("Select subject,level from learningobject where level =" + ParentID.ToString());
    parent.ChildNodes.Clear();
    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        TreeNode child = new TreeNode();
        child.Text = dr["subject"].ToString().Trim();
        child.Value = dr["level"].ToString().Trim();
        if (child.ChildNodes.Count == 0)
        {
            child.PopulateOnDemand = true;
        }
        child.ToolTip = "Click to get Child";
        child.SelectAction = TreeNodeSelectAction.SelectExpand;
        child.CollapseAll();
        parent.ChildNodes.Add(child);
    }
}

protected DataSet PDataset(string Select_Statement)
{
    string connStr = @"Data Source=localhost;Database=ahsschema;User Id=webuser;Password=";
    using (MySqlConnection SqlCon = new MySqlConnection(connStr))
    {
        MySqlDataAdapter ad = new MySqlDataAdapter(Select_Statement, SqlCon);
        DataSet ds = new DataSet();
        ad.Fill(ds);
        return ds;

    }
}

1 个答案:

答案 0 :(得分:0)

试试这句话

 DataSet ds = PDataset("Select subject, level FROM learningobject WHERE level ='"+ ParentID.ToString()+"'");

不能发表评论,所以不得不把它放在这里抱歉,如果没有帮助