C# 使用 SQL 查询数据填充 TreeView 并封装成方法
使用 C# 代码连接数据库,查询数据并填充 TreeView,并封装成可复用的方法
1. 连接数据库并查询数据
// 连接数据库
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
// 查询数据
string query = "SELECT prd_cat, prd_name, sop_name, ver, sop_page FROM sop";
SqlCommand command = new SqlCommand(query, conn);
SqlDataReader reader = command.ExecuteReader();
// 清空TreeView
treeView1.Nodes.Clear();
// 遍历数据并填充TreeView
while (reader.Read())
{
string prdCat = reader["prd_cat"].ToString();
string prdName = reader["prd_name"].ToString();
string sopName = reader["sop_name"].ToString();
string ver = reader["ver"].ToString();
string sopPage = reader["sop_page"].ToString();
// 检查是否已存在主节点
TreeNode mainNode = treeView1.Nodes.Find(prdCat, false).FirstOrDefault();
if (mainNode == null)
{
mainNode = treeView1.Nodes.Add(prdCat, prdCat);
}
// 检查是否已存在二级节点
TreeNode subNode = mainNode.Nodes.Find(prdName, false).FirstOrDefault();
if (subNode == null)
{
subNode = mainNode.Nodes.Add(prdName, prdName);
}
// 添加三级节点
TreeNode thirdNode = subNode.Nodes.Add(sopName, sopName);
}
// 关闭连接
reader.Close();
}
2. 封装成方法
private void RefreshTreeView()
{
// 连接数据库
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
// 查询数据
string query = "SELECT prd_cat, prd_name, sop_name, ver, sop_page FROM sop";
SqlCommand command = new SqlCommand(query, conn);
SqlDataReader reader = command.ExecuteReader();
// 清空TreeView
treeView1.Nodes.Clear();
// 遍历数据并填充TreeView
while (reader.Read())
{
string prdCat = reader["prd_cat"].ToString();
string prdName = reader["prd_name"].ToString();
string sopName = reader["sop_name"].ToString();
string ver = reader["ver"].ToString();
string sopPage = reader["sop_page"].ToString();
// 检查是否已存在主节点
TreeNode mainNode = treeView1.Nodes.Find(prdCat, false).FirstOrDefault();
if (mainNode == null)
{
mainNode = treeView1.Nodes.Add(prdCat, prdCat);
}
// 检查是否已存在二级节点
TreeNode subNode = mainNode.Nodes.Find(prdName, false).FirstOrDefault();
if (subNode == null)
{
subNode = mainNode.Nodes.Add(prdName, prdName);
}
// 添加三级节点
TreeNode thirdNode = subNode.Nodes.Add(sopName, sopName);
}
// 关闭连接
reader.Close();
}
}
3. 在其他按钮的事件处理程序中调用方法
// 在其他按钮的事件处理程序中调用RefreshTreeView方法
private void button1_Click(object sender, EventArgs e)
{
RefreshTreeView();
}
说明:
connString为连接字符串,请根据实际情况进行修改。treeView1为您要填充的 TreeView 控件的名称,请根据实际情况进行修改。- 可以根据实际需求修改查询语句
SELECT prd_cat, prd_name, sop_name, ver, sop_page FROM sop,以及填充 TreeView 的逻辑。
优势:
- 将刷新 TreeView 的代码封装成一个独立的方法,提高代码复用性,方便维护。
- 在其他按钮的事件处理程序中只需要调用
RefreshTreeView()方法,即可刷新 TreeView,简化代码逻辑。 - 提高代码可读性和可维护性。
原文地址: https://www.cveoy.top/t/topic/qhbM 著作权归作者所有。请勿转载和采集!