Как показать отображаемое значение для выбранного узла в виде дерева в C #? - PullRequest
2 голосов
/ 11 января 2012

Я пытаюсь создать древовидную структуру, которая извлекает информацию из базы данных SQL.Я хочу, чтобы текст был полем имени, но когда вы дважды щелкаете по имени, я хочу, чтобы он отображал поле идентификатора.Я смотрел и смотрел, но не могу найти какую-либо информацию по этому поводу?

Код пробовал (добавлено из комментария ОП):

   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 ]

4 голосов
/ 11 января 2012

Когда вы создаете новые узлы для TreeView, вы можете указать текстовое значение и значение ключа, например, так:

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

Затем вы просто вернете ключ выбранного узла.Это то, что вы хотите?

РЕДАКТИРОВАТЬ: Это то, что происходит, когда вы говорите из памяти ... это неправильно .«ключ» не является значением скрытого ключа, как идентификатор, «ключ» - это имя узла дерева.Пожалуйста, подождите, пока я предоставлю вам правильное решение.

** 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" и "Mr. Dexter",

2 голосов
/ 12 января 2012
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()); 
}
1 голос
/ 11 января 2012

Вы можете использовать событие Click мыши.когда вы щелкаете по определенному узлу (предположим, что это не WPF, потому что это Items), вы можете получить его свойство Text из SelectedNode.

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

        }

, затем вы можете передать это строковое значение в базу данных, чтобы получить ваше значение, смешатьс оператором Select и предложением WHERE, чтобы вы могли легко получить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...