[英]How to get the ID number from a selected treeView node?
我有一個用SQL Server數據庫表中的數據填充的TreeView
,我想根據數據庫中選定的項目ID將數據插入其中,這是我的代碼:
private void Form1_Load(object sender, EventArgs e)
{
TreeLoad();
}
// Connecting to Database and retieving data
private DataTable Select(int ID)
{
SqlConnection conn = new SqlConnection(@"server= M_SHAWAF\ORCHESTRATE; integrated security= true; database= FM");
conn.Open();
SqlCommand cmd = new SqlCommand("GetNodes2", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter("ID", ID);
parameter.SqlDbType = SqlDbType.Int;
cmd.Parameters.Add(parameter);
SqlDataAdapter ad = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
ad.Fill(dt);
return dt;
}
//Loading the treeView1
void TreeLoad()
{
DataTable dt = Select(0);
AddNodes(dt, treeView1.Nodes);
}
//Adding nodes to treeView1
void AddNodes(DataTable dt, TreeNodeCollection coll)
{
foreach (DataRow dr in dt.Rows)
{
TreeNode node = new TreeNode();
node.Text = dr[1].ToString();
coll.Add(node);
try
{
DataTable child = Select((int)dr[0]);
if (child.Rows.Count > 0)
{
AddNodes(child, node.Nodes);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
這是表:
表格:
當我單擊插入btn時,我想獲取所選節點的EmpID
(還有另一個Windows窗體,其中包含新名稱的文本框)。
GetNodes
存儲過程:
create procedure GetNodes
@ID int
as
select
e.EmpID, e.EmpName
from
Employee e
where
isnull(e.ManagerID, 0) = @ID
return
一種選擇是將ID存儲在每個節點的Tag中。 然后,您可以通過調用treeView1.SelectedNode.Tag
來獲取單擊按鈕時的效果。
例如,當您從數據庫中填充樹形視圖時,您需要為樹形視圖中的每個節點循環。
void SelectNodeOnTreeView(string EmpID, TreeNodeCollection NodeCollection)
{
if (NodeCollection.Count > 0)
{
foreach (TreeNode node in NodeCollection)
{
if (node.Text == EmpID)
{
treeView1.SelectedNode = node;
break;
}
SelectNodeOnTreeView(EmpID, node.Nodes);
}
}
}
您可以創建自己的TreeNode類,該類實現TreeNode
但還可以添加其他必要的字段,例如id
:
class myTreeNode : TreeNode
{
public int id;
public myTreeNode(string text, int id)
{
this.Text = text;
this.id = id;
}
}
然后在foreach
循環的AddNodes
方法中,而不是:
TreeNode node = new TreeNode();
node.Text = dr[1].ToString();
做這樣的事情:
TreeNode node = new myTreeNode(dr[1].ToString(), (int)dr[0]); //don't know where you're storing your ID, here I'm assuming it's in dr[0].
這樣,您應該可以通過執行以下操作來獲取所選節點的ID:
myTreeNode selectedNode = (myTreeNode)treeview1.SelectedNode;
int selectedID = selectedNode.id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.