Didiron 0 Denunciar post Postado Setembro 21, 2012 Boa Noite Pessoal. Tenho atualmente uma treeview, na qual os "links" vem do banco de dados SQL Server. Tenho categorias e sub categorias, na qual eu listo elas no treeview com o seguinte código: connection.Open(); SqlCommand cmd = new SqlCommand("SELECT * FROM Categorias", connection); DataTable dtProdutos = new DataTable(); TreeNode treeNode; var dr = cmd.ExecuteReader(); while (dr.Read()) { //subcategorias SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Produto where id_Categoria = " + dr["id"].ToString(), connection); da.Fill(dtProdutos); if (dtProdutos.Rows.Count > 0) { int Indice = dtProdutos.Rows.Count; int i = 0; //cria um array para os produtos TreeNode[] array = new TreeNode[indice]; foreach (DataRow row in dtProdutos.Rows) { array[i] = new TreeNode(row["nome"].ToString()); i++; } treeNode = new TreeNode(dr["nome"].ToString(), array); dtProdutos.Rows.Clear(); } else { treeNode = new TreeNode(dr["nome"].ToString()); } //adiciona treeView1.Nodes.Add(treeNode); } connection.Close(); Mas, na forma em que está quando eu clico em um link, nada acontece, de que forma posso pegar o id da sub-categoria que eu selecionei? Agradeço muito. ABraços. Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Setembro 23, 2012 No evento que você utilizou para o link, acredito ser o click ou então o double click, fica a seu critério, tente jogar para uma variável assim: int selectedID = treeView1.SelectedNode.Index Assim você pegaria o ID do Node selecionado. Caso você deseje pegar o nome e buscar no DB: String SelectedName = treeView1.SelectedNode.Name A propriedade treeView1.SelectedNode Tem diversas funções é só buscar o que está a procura. Compartilhar este post Link para o post Compartilhar em outros sites
Didiron 0 Denunciar post Postado Setembro 24, 2012 Obrigado por ajudar KhaosDoctor, mas eu vi que você sugeriu pegar o index do node selecionado, mas em nenhum lugar no meu código eu atribui o id do banco em um indice da treeview, de que forma que eu faço isso? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Didiron 0 Denunciar post Postado Setembro 24, 2012 Bem pessoal. Consegui resolver o problema da seguinte forma. array[i].Tag = row["ProductID"].ToString(); E depois para recuperar esse id é utilizando o evento NodeMouseClick. private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Node.Tag != null) MessageBox.Show(e.Node.Tag.ToString()); } Obrigado a sua ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Setembro 24, 2012 Parabéns pela solução Didiron, muito inteligente, jogar um valor direto a uma variável puxada do BD para melhor busca. Quanto a minha sugestão acima, eu não sabia que você necessitava exclusivamente do numero que somente o banco de dados provinha, senão iria sugerir a mesma coisa da solução. Pensei que você precisasse primeiro do nodo selecionado e depois buscasse ele no banco de dados, assim você teria um controle de qual nodo foi clicado ou selecionado e poderia fazer uma busca específica. Mas parabéns :) Compartilhar este post Link para o post Compartilhar em outros sites