c# - 用相关数据库表中的数据填充树视图
问题描述
编译代码时,会出现两种错误;这是代码:
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);
}
}
}
}
- 在这样的行中:
superNode = new TreeNode (superName, superCode);
错误“参数 2:无法从”字符串“转换为”System.Windows.Forms.TreeNode []“”
- 在这样的行中:
macroNode.ChildNodes.Add (superNode);
错误““TreeNode”不包含“ChildNodes”的定义,并且找不到将“TreeNode”类型作为第一个参数的可用扩展方法“ChildNodes”(可能缺少 using 指令或程序集引用)。
解决方案
您将两个字符串值参数传递给 TreeNode 构造函数(superName、superCode),它需要一个字符串和一个 TreeNode 数组。在此处查看文档:https ://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.treenode.-ctor?view=net-5.0
TreeNodes 中没有名为“ChildNodes”的属性。我相信您要调用的属性是 TreeNodes.Nodes,并且要添加值,您需要调用其 Insert() 方法。
推荐阅读
- git - ansible:从远程存储库中提取数据并在数据更改时运行另一个任务
- node.js - npm audit 无法在使用 bash 的 Windows 上运行
- xamarin - 无法启动模拟器 请提出问题 尝试加载格式不正确的应用程序
- c# - 将数据网格绑定到 ObservableCollection 中的 ObservableCollection
- java - 特定列的 Spring Data UpdateTimestamp
- javascript - 将详细信息添加到数据库时出现警报错误
- ember-cli - 安装插件后 Ember CLI 无法使用
- html - CSS中心div
垂直和水平到父 div
- java - 如何在二叉表达式树中找到一个值?
- mysql - MySQL如何根据避免特定结果来过滤查询