如何在C#中显示树视图中所选节点的显示值?

时间:2012-01-11 16:26:29

标签: c# sql treeview

我正在尝试创建一个从sql数据库中提取信息的树视图。我希望文本是名称字段,但是当您双击名称时,我希望它显示id字段。我看起来但看起来却找不到任何相关信息?

尝试过的代码(从OP的评论中添加):

   foreach (DataRow dr in Db.Table("Employee").Rows) 
   { 
      treeView1.Nodes.Add(
             new TreeNode(dr["Name"].ToString(),
             new TreeNode[] {new TreeNode(dr["EEID"].ToString())}));
   } 
      var node = treeView1.SelectedNode.Nodes[0].Text; 
      MessageBox.Show(string.Format("You selected: {0}", node));

3 个答案:

答案 0 :(得分:4)

为TreeView创建新节点时,您可以指定文本值和键值,如下所示:

TreeView tv = new TreeView();
tv.Nodes.Add(key, text); //where key is your database id value, and text the display 

然后你只需返回点击节点的密钥即可。这是你想要的吗?

编辑:当您从记忆中说话时会发生这种情况......这是错误。 'key'不是隐藏的键值,如ID,'key'是树节点的名称。请在我给你一个合适的解决方案的时候按住。

** EDIT2(已解决)**:您也可以使用Name属性。像这样:

tView.Nodes.Add("Id_0001", "Mr. Dexter");

然后您可以使用以下内容检索该节点的值:

    private void tvView_AfterSelect(object sender, TreeViewEventArgs e)
    {
        TreeNode node = e.Node;
        MessageBox.Show(node.Name + "\n" + node.Text);
    }

会产生结果:“Id_0001”和“德克斯特先生”。

答案 1 :(得分:2)

foreach (DataRow dr in Db.Table("Employee").Rows)
{ 
  TreeNode tn = new TreeNode(); 
  tn.Tag = dr["eeid"]; 
  tn.Text = dr["Name"].ToString(); 
  treeView1.Nodes.Add(tn); 
} 
private void treeView1_DoubleClick(object sender, EventArgs e) 
{ 
  MessageBox.Show(treeView1.SelectedNode.Tag.ToString()); 
}

答案 2 :(得分:1)

您可以使用鼠标点击事件。当你点击一个特定的节点(假设它不是WPF因为它的项目)你可以从SelectedNode属性中获取它的文本。

 private void btnGetNodeValue_Click(object sender, EventArgs e)
        {
            string nodeVal=  treeView1.SelectedNode.Text;

        }

然后你可以将这个字符串值传递给数据库来检索你的值,混合使用Select语句和WHERE子句,这样你就可以很容易地得到它。