Treeview em C# aspnet

ButterflyEffect

Power Member
Treeview em C# aspnet Ola. Estou em estagio e precisava de fazer uma treeview (em que ja fiz o xml)e atraves dessa treeview fazer como se fosse uma griedview em que clicava num node e acedia a informação da base de dados.Alguem sabe ajudar-me e se é possivel faze-lo?
 
Oi,

Deixa ver se percebi, queres ler de uma base de dados e depois listar para uma TreeView, certo?

Então é fácil, vais ler para um data reader, depois percorres o data reader e vais colocando na TreeView.

Aqui tens um exemplo que fiz (um pouco a pressa) mas tem a ideia geral

[C#]

string strConnString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection connection = newSqlConnection(strConnString);

SqlCommand sqlCmd = newSqlCommand("SELECT id, name FROM names", connection);
connection.Open ();
SqlDataReader sqlReader = sqlCmd.ExecuteReader();
while (sqlReader.Read())
{
TreeView1.Nodes.Add (newTreeNode (sqlReader.GetString(1), Convert.ToString(sqlReader.GetInt64(0))));
}

connection.Close ();

Espero que tenha sido util, qualquer dúvida!

Cumps,
 
Olha podias explicarme esta part de codigo
TreeView1.Nodes.Add (newTreeNode (sqlReader.GetString(1), Convert.ToString(sqlReader.GetInt64(0))));
??? e posso depois no reader filtrar dados????
 
Olá,

Essa parte do código vai adicionar-te a tua TreeView varios nos de acordo com a leitura feita do reader.

new TreeNode ([value],[field]): cria um novo nó, com value e field
sqlReader.GetString(n) : Obtem o valor do campo 'n' da row actual (no reader)

Sim, podes filtrar o reader.

cumps,
 
olha dame erro

Specified cast is not valid.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidCastException: Specified cast is not valid.

Source Error:
Line 25: while (Reader.Read())Line 26: {Line 27: TreeView1.Nodes.Add(new TreeNode(Reader.GetString(0), Convert.ToString(Reader.GetInt64(0))));Line 28: }Line 29:
Source File: c:\Documents and Settings\IGMEstagio\My Documents\Prototipo\TREE VIEW.aspx.cs Line: 27

Stack Trace:
[InvalidCastException: Specified cast is not valid.] System.Data.SqlClient.SqlBuffer.get_Int64() +108 System.Data.SqlClient.SqlDataReader.GetInt64(Int32 i) +36 TREE_VIEW.Page_Load(Object sender, EventArgs e) in c:\Documents and Settings\IGMEstagio\My Documents\Prototipo\TREE VIEW.aspx.cs:27 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +13 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +43 System.Web.UI.Control.OnLoad(EventArgs e) +80 System.Web.UI.Control.LoadRecursive() +49 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3750
 
Última edição pelo moderador:
oi,

Isso é porque muito possivelmente estaras a fazer um cast inválido, qd fazes Reader.GetString(0) tens a certeza que o field que esta na posição '0' do teu reader é uma string? e em relação ao GetInt64(1) tens a certeza que é um inteiro?

Também poderá estar relacionado com leitura de campos que estejam a null na base de dados, para isso teras de testar:
Reader.isNull(n) : Acho que é assim, mas não confirmo!!

Cumps,
 
OLA desculpa pergta mas o que é um cast?Sim a maioria dos campos permite null na base dados.
Olha o meu codigo ta axim....

Código:
protectedvoid Page_Load(object sender, EventArgs e)
{
SqlConnection cnn = newSqlConnection(ConfigurationManager.ConnectionStrings["IGMConnectionString"].ConnectionString);
SqlCommand Cmd = newSqlCommand("SELECT Fabrica,CNC,f1,s1,ae1,ap1,chatter1,outros1,f2,s2,ae2,ap2,chatter2,outros2,cod_ferramenta FROM parametros_maquinas", cnn);
cnn.Open();
SqlDataReader Reader = Cmd.ExecuteReader();
while (Reader.Read())
{
TreeView1.Nodes.Add(new TreeNode(Reader.GetString(1), Convert.ToString(Reader.GetInt64(0))));
}
cnn.Close();
 
}
protectedvoid Onload(EventArgs e)
{
base.OnLoad(e);
XmlReaderSettings setts = newXmlReaderSettings();
setts.Schemas.Add("", this.MapPath("Consultar.xsd"));
setts.ValidationType = ValidationType.Schema;
setts.ValidationEventHandler += newValidationEventHandler(ProcessError);
XmlReader reader = XmlReader.Create(this.MapPath(""), setts);
//XmlReader = XmlReader.Create(this.MapPath("Consultar.xml"), setts);
XmlDocument doc = newXmlDocument();
doc.Load(reader);
}
// if (!ProcessOK)
// {
// TreeView1.DataSourceID = ""; return;}
// Source.data = doc.InnerXml;}
protectedvoid ProcessError (Object sender, ValidationEventArgs args)
{
info.Text=args.Exception.ToString(); 
//ProcessOK=false; 
}
 
e no aspx
 
<asp:TreeViewID="TreeView1"runat="server"DataSourceID="XmlDataSource1"ImageSet="Contacts"
NodeIndent="10"ShowLines="True"LineImagesFolder="~/TreeLineImages"Width="135px">
<ParentNodeStyleFont-Bold="True"ForeColor="#5555DD"/>
<HoverNodeStyleFont-Underline="False"/>
<SelectedNodeStyleFont-Underline="True"HorizontalPadding="0px"VerticalPadding="0px"/>
<NodeStyleFont-Names="Verdana"Font-Size="8pt"ForeColor="Black"HorizontalPadding="5px"
NodeSpacing="0px"VerticalPadding="0px"/>
<DataBindings>
<asp:TreeNodeBindingDataMember="Fabrica"TextField="#InnerText"ValueField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Maquina"TextField="#InnerText"ValueField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Operacao"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Estrategia"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Diametro"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Raio"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Altura"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Tipo"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="FabricanteCabeca"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="pastilhas"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="n_pastilhas"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="tipopastilhas"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="fabricante"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="grao"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Parametros"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="ParametrosFerramenta"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="parametrosfabricante"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="parametrosvarios"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="parametros2d"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="parametros2_3eixos"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="parametros5eixos"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="parametros_suportes_cone"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="ParametrosMaquina"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="CNC"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Operacao"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Estrategia"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Nome"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="media"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="maximo"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="Grupo"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="media"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="maximo"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="GrupoSimoldes"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="media"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="maximo"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="outros"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="f"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="s"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="ae"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="ap"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="chatter"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="outros"TextField="#InnerText"/>
<asp:TreeNodeBindingDataMember="uf"TextField="#InnerText"/>
</DataBindings>
</asp:TreeView>
<asp:XmlDataSourceID="XmlDataSource1"runat="server"DataFile="~/Consultar.xml"></asp:XmlDataSource>
 
o meu xml e este
<Consultar>
<Ferramentas>
<Fabrica> Fabrica</Fabrica>
<Maquina>Maquina</Maquina>
<Operacao>Operacao</Operacao>
<Estrategia> Estrategia</Estrategia>
<Parametros_Maquinas>
<Maquinas>
<media> Media Maquina </media>
<maximo> Maximo Maquina</maximo>
</Maquinas> 
<Grupo_Maquinas> 
<media> Media Grupo Maquinas</media>
<maximo> Maximo Grupo Maquinas</maximo>
</Grupo_Maquinas>
<Grupo_Simoldes>
<media> Media Grupo Simoldes </media>
<maximo> Maximo Grupo Simoldes</maximo>
</Grupo_Simoldes> 
</Parametros_Maquinas>
</Ferramentas>
</Consultar>
O que preciso de saber e ao clicar em cada nod faxer uma consulta a essa tabela ou campos.
<Consultar>
<Ferramentas>
<Fabrica> Fabrica</Fabrica>
<Maquina>Maquina</Maquina>
<Operacao>Operacao</Operacao>
<Estrategia> Estrategia</Estrategia>
<Parametros_Maquinas>
<Maquinas>
<media> Media Maquina </media>
<maximo> Maximo Maquina</maximo>
</Maquinas> 
<Grupo_Maquinas> 
<media> Media Grupo Maquinas</media>
<maximo> Maximo Grupo Maquinas</maximo>
</Grupo_Maquinas>
<Grupo_Simoldes>
<media> Media Grupo Simoldes </media>
<maximo> Maximo Grupo Simoldes</maximo>
</Grupo_Simoldes> 
</Parametros_Maquinas>
</Ferramentas>
</Consultar>
 
Última edição pelo moderador:
oi,

Uma pesquisa rápida no google ia ajudar-te a saber o que é um cast!!! um cast de forma mto resumida, é uma conversão de tipos.

faz assim, para teres a certeza que não vais ler nulos da base de dados:

quando usares o getString ou getInt
da1.IsDBNull(n) ? "" : da1.GetString(n);

cumprimentos,
 
Back
Topo