Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在为treeview编写xml时循环_C#_Asp.net_Xml_Wpf_Treeview - Fatal编程技术网

C# 在为treeview编写xml时循环

C# 在为treeview编写xml时循环,c#,asp.net,xml,wpf,treeview,C#,Asp.net,Xml,Wpf,Treeview,我从Web表单应用程序中的SQL数据库读取数据,并将其写入XML文件,然后使用TreeView控件显示它们。但问题是,我只能从数据库中读取ParentID为0的树,并使用TreeView显示它们。如何在树视图上显示ParentID为1的子树? 从数据库中读取: public DataTable GetMenu(int parentId) { DataTable dt = new DataTable(); using (SqlConnection con = new SqlConn

我从Web表单应用程序中的SQL数据库读取数据,并将其写入XML文件,然后使用TreeView控件显示它们。但问题是,我只能从数据库中读取ParentID为0的树,并使用TreeView显示它们。如何在树视图上显示ParentID为1的子树? 从数据库中读取:

public DataTable GetMenu(int parentId)
{
    DataTable dt = new DataTable();
    using (SqlConnection con = new SqlConnection("Data Source =(Local);Initial Catalog=Tajari;Integrated Security=True;"))
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("select * from TBLJobs where ParentId=@ParentId", con);
        cmd.Parameters.AddWithValue("@ParentId", parentId);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
        con.Close();
        return dt;
    }
}
创建XML文件代码:

private void CreateNodes(int parentId)
{
    DataTable dt = GetMenu(0);
    foreach(DataRow dr in dt.Rows)
    {
        writer.WriteStartElement("Node");
        writer.WriteStartAttribute("Id");
        writer.WriteValue(dr["MenuId"].ToString());
        writer.WriteEndAttribute();

        writer.WriteStartAttribute("Name");
        writer.WriteValue(dr["MenuName"].ToString());
        writer.WriteEndAttribute();

        writer.WriteEndElement();
    }
}
使用XMLWriter写入XML文件

public void CreateMenu()
{
    using (writer = XmlWriter.Create(Server.MapPath("Temp\\Menu.XML")))
    {
        writer.WriteStartDocument();
        writer.WriteStartElement("Menu");
        CreateNodes(0);
        writer.WriteEndDocument();
    }
}
private void CreateNodes(int parentId)
{
    DataTable dt = GetMenu(0);
    foreach(DataRow dr in dt.Rows)
    {
        writer.WriteStartElement("Node");
        writer.WriteStartAttribute("Id");
        writer.WriteValue(dr["MenuId"].ToString());
        writer.WriteEndAttribute();

        writer.WriteStartAttribute("Name");
        writer.WriteValue(dr["MenuName"].ToString());
        writer.WriteEndAttribute();

        **CreateNodes(Convert.ToInt32(dr["MenuId"]));**
        writer.WriteEndElement();
    }
}