首页 > 解决方案 > 用相关数据库表中的数据填充树视图

问题描述

编译代码时,会出现两种错误;这是代码:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
public partial class Form2 : Form
{
    public Form2()
    {

        InitializeComponent();
    }
    SqlConnection con;
    bool a = true;
    SqlCommand cmd;
    SqlDataAdapter sda;
    DataTable dt, dt2, dt3;
    TreeNode macroNode, superNode, objektNode;
    string CmdString, macroCode, superCode, objekCode, macroName, superName, objektName;
    protected void Page_Load(object sender, EventArgs e)
    {
        using (SqlConnection cn = new SqlConnection())
        {
            cn.ConnectionString = Form1.MyConnectionString;
            cn.Open();
            LoadData();
        }
    }
    private void LoadData()
    {
        con = new SqlConnection(Form1.MyConnectionString);
        CmdString = "SELECT МакроКод, макрообъект FROM ВыборМакроОбъект";
        cmd = new SqlCommand(Form1.MyConnectionString, con);
        sda = new SqlDataAdapter(cmd);
        dt = new DataTable();

        sda.Fill(dt);

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            macroCode = dt.Rows[i]["МакроКод"].ToString();
            macroName = dt.Rows[i]["макрообъект"].ToString();

            macroNode = new TreeNode(macroName, macroCode);

            CmdString = "SELECT Код, суперкод FROM State WHERE макрообъект=@МакроКод AND СуперКод!=5";
            cmd = new SqlCommand(CmdString, con);
            cmd.Parameters.AddWithValue("@МакроКод", macroCode);
            sda = new SqlDataAdapter(cmd);
            dt2 = new DataTable();

            sda.Fill(dt2);

            for (int j = 0; j < dt2.Rows.Count; j++)
            {
                superCode = dt2.Rows[j]["СуперКод"].ToString();
                superName = dt2.Rows[j]["суперобъект"].ToString();

                superNode = new TreeNode(superName, superCode);

                macroNode.ChildNodes.Add(superNode);

                CmdString = "SELECT ОбъектКод, объект FROM ВыборОбъект WHERE суперобъект=@СуперКод";
                cmd = new SqlCommand(CmdString, con);
                cmd.Parameters.AddWithValue("@СуперКод", superCode);
                sda = new SqlDataAdapter(cmd);
                dt3 = new DataTable();

                sda.Fill(dt3);

                for (int k = 0; k < dt3.Rows.Count; k++)
                {
                    objekCode = dt3.Rows[k]["ОбъектКод"].ToString();
                    objektName = dt3.Rows[k]["объект"].ToString();

                    objektNode = new TreeNode(objektName, objekCode);

                    superNode.ChildNodes.Add(objektNode);
                }
            }
            treeView1.Nodes.Add(macroNode);
        }
    }
}
}
  1. 在这样的行中:superNode = new TreeNode (superName, superCode);

错误“参数 2:无法从”字符串“转换为”System.Windows.Forms.TreeNode []“”

  1. 在这样的行中: macroNode.ChildNodes.Add (superNode);

错误““TreeNode”不包含“ChildNodes”的定义,并且找不到将“TreeNode”类型作为第一个参数的可用扩展方法“ChildNodes”(可能缺少 using 指令或程序集引用)。

标签: c#

解决方案


  1. 您将两个字符串值参数传递给 TreeNode 构造函数(superName、superCode),它需要一个字符串和一个 TreeNode 数组。在此处查看文档:https ://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.treenode.-ctor?view=net-5.0

  2. TreeNodes 中没有名为“ChildNodes”的属性。我相信您要调用的属性是 TreeNodes.Nodes,并且要添加值,您需要调用其 Insert() 方法。


推荐阅读