20 messaggi dal 17 luglio 2006
Ciao a tutti.
Dopo mille tentativi vi posto il mio problema:

Devo ricavare il primo nodo di un controllo treeview, ho provato con il comando node.parent ma restituisce il nodo padre del nodo, non il primo nodo.

la mia struttura è la seguente:
categoria --> sottocategoria1 --> sottocategoria2

Devo fare in modo che quando clicco l'ultima sottocategoria (sottogategoria2)
mi faccia un link ad una pagina passando, tramite querystring, i 3 valori dei nodi!

Conoscete qualche metodo o qualche soluzione per far questo?

Grazie!
risalire l'albero dei Parent finche non arrivi all'ultimo.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
20 messaggi dal 17 luglio 2006
Ma c'è un comando per risalire i nodi?

Cosi: NewNode.Parent.Text riesco a risalire al nodo precedente ma se faccio: NewNode.Parent.Parent.Text non risalgo i nodi!

Ulteriore problema:
quando faccio una query per la generazione dei nodi e voglio passare un parametro tutto ok funziona:

esempio:
sqlQuery.CommandText = "SELECT Caratteri00, Prodotto, Caratteri01 FROM dbo.Listino WHERE (Prodotto=@Prodotto)"

sqlQuery.Parameters.Add("@Caratteri01", SqlDbType.Char).Value = node.Value

MA SE VOGLIO PASSARE DUE PARAMETRI SI BLOCCA TUTTO!

esempio:
sqlQuery.CommandText = "SELECT Caratteri00, Prodotto, Caratteri01 FROM dbo.Listino WHERE (Prodotto=@Prodotto) AND (Caratteri01=@Caratteri01)"

sqlQuery.Parameters.Add("@Caratteri01", SqlDbType.Char).Value = node.Value
sqlQuery.Parameters.Add("@Prodotto", SqlDbType.Char).Value = node.Value

Sapete dirmi se sbaglio qualcosa dal punto di vista della sintassi?

GRAZIE!
strano che non riesci a risalire i Parent, come associ il TreeView alla fonte dati.

per la query ricevi qualche messaggio d'errore?

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
20 messaggi dal 17 luglio 2006
Ho usato l'esempio di microsoft che trovi in linea: http://msdn2.microsoft.com/it-it/library/7a9swst5(vs.80).aspx
Per ora ho aggirato l'ostacolo formattando la stringa... metodo veramente brutto!

NO è poprio quello il problema non ricevo nessun messaggio di errore per la query.
Nella visualizzazione del treeview mi dice soltanto il browser "Errore nella visualizzazione della pagina"... e non mi espande il nodo!

Ho provato anche così:
sqlQuery.CommandText = "SELECT Caratteri00, Prodotto, Caratteri01 FROM dbo.CLINEListino WHERE (Prodotto='"Consumabili"') AND (Caratteri01='"timbri"')"

cioè passando un parametro fisso anzichè da variabile ma stesso errore!
se esegui solo la query sul db tutto funziona?

puoi postare parte del codice della pagina, in particolare la parte dichiarativa del TreeView e il corpo del metodo che usi per popolare i nodi.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
20 messaggi dal 17 luglio 2006
Vi posto lo script che popola il treeview:

<script runat="server">

Public globale As String
Dim globale2 As String
Dim cont = 0

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Primo.Visible = True
Secondo.Visible = False
End Sub

Sub NavigationMenu1_Menu1ItemClick(ByVal sender As Object, ByVal e As MenuEventArgs)

' Display the text of the menu item selected by the user.
If e.Item.Text = "Ricerca per produttore" Then

Primo.Visible = False
Secondo.Visible = True
End If


End Sub


Protected Sub TreeView1_TreeNodePopulate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles TreeView1.TreeNodePopulate
If e.Node.ChildNodes.Count = 0 Then
Select Case e.Node.Depth
Case 0
PopulateCategories(e.Node)
Case 1
PopulateSubCategories(e.Node)
Case 2
PopulateSubMarca(e.Node)
End Select
End If

End Sub

Sub PopulateCategories(ByVal node As TreeNode)
Dim sqlQuery As New SqlCommand("SELECT Caratteri01 FROM dbo.CATWEBMAIN")
Dim ResultSet As DataSet
ResultSet = RunQuery(sqlQuery)
If ResultSet.Tables.Count > 0 Then
Dim row As DataRow
For Each row In ResultSet.Tables(0).Rows
Dim NewNode As TreeNode = New _
TreeNode(row("Caratteri01").ToString())
NewNode.PopulateOnDemand = True
NewNode.ImageUrl = "ImgMenu/" + (row("Caratteri01")).ToString + ".gif"
NewNode.SelectAction = TreeNodeSelectAction.Expand
node.ChildNodes.Add(NewNode)

Next
End If
End Sub


Sub PopulateSubCategories(ByVal node As TreeNode)
Dim sqlQuery As New SqlCommand
sqlQuery.CommandText = "SELECT Prodotto FROM dbo.CLINEListino Where Caratteri01 = @Caratteri01 GROUP BY Prodotto"
sqlQuery.Parameters.Add("@Caratteri01", SqlDbType.Char).Value = node.Value
Dim ResultSet As DataSet = RunQuery(sqlQuery)
If ResultSet.Tables.Count > 0 Then
Dim row As DataRow
For Each row In ResultSet.Tables(0).Rows
Dim NewNode As TreeNode = New _
TreeNode(row("Prodotto").ToString())
NewNode.PopulateOnDemand = True
NewNode.SelectAction = TreeNodeSelectAction.Expand

node.ChildNodes.Add(NewNode)
Next
End If
End Sub



Sub PopulateSubMarca(ByVal node As TreeNode)
Dim sqlQuery As New SqlCommand
sqlQuery.CommandText = "SELECT Caratteri00, Prodotto, Caratteri01 FROM dbo.CLINEListino WHERE (Prodotto=@Prodotto) AND (Caratteri01=@Caratteri01)"
sqlQuery.Parameters.Add("@Caratteri01", SqlDbType.Char).Value = node.Value
sqlQuery.Parameters.Add("@Prodotto", SqlDbType.Char).Value = node.Value

Dim ResultSet As DataSet = RunQuery(sqlQuery)
If ResultSet.Tables.Count > 0 Then
Dim row As DataRow
For Each row In ResultSet.Tables(0).Rows
Dim NewNode As TreeNode = New _
TreeNode(row("Caratteri00").ToString())
NewNode.PopulateOnDemand = False
NewNode.SelectAction = TreeNodeSelectAction.SelectExpand
node.ChildNodes.Add(NewNode)
globale2 = Convert.ToString(NewNode.Parent.Text)
NewNode.NavigateUrl = "Default.aspx?caratteri00=" + NewNode.Value + "&prodotto=" + globale2.ToString
globale2 = ""

Next
End If
End Sub


Function RunQuery(ByVal sqlQuery As SqlCommand) As DataSet
Dim connectionString As String
connectionString = ConfigurationManager.ConnectionStrings("CLINEConnectionstring").ConnectionString
Dim dbConnection As New SqlConnection
dbConnection.ConnectionString = connectionString
Dim dbAdapter As New SqlDataAdapter
dbAdapter.SelectCommand = sqlQuery
sqlQuery.Connection = dbConnection
Dim resultsDataSet As DataSet = New DataSet
Try
dbAdapter.Fill(resultsDataSet)
Catch ex As Exception
labelStatus.Text = "Unable to connect to SQL Server."
End Try
Return resultsDataSet
End Function


Il corpo:

<asp:panel id="Primo" runat="server">
<asp:TreeView ID="TreeView1" runat="server" ExpandDepth="1" ImageSet="BulletedList" MaxDataBindDepth="4" OnTreeNodePopulate="TreeView1_TreeNodePopulate" ShowExpandCollapse="False" Font-Bold="True" Font-Names="Verdana">
<Nodes>
<asp:TreeNode Checked="True" PopulateOnDemand="True" SelectAction="SelectExpand"
Selected="True" Text="Categorie" Value="Categorie"></asp:TreeNode>
</Nodes>
<ParentNodeStyle Font-Bold="False" Font-Names="Verdana" Font-Size="8pt" HorizontalPadding="5px"
NodeSpacing="1px" VerticalPadding="2px" />
<RootNodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" />
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
<SelectedNodeStyle Font-Underline="True" HorizontalPadding="0px" VerticalPadding="0px" ForeColor="#5555DD" />
<NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="0px"
NodeSpacing="0px" VerticalPadding="0px" />
</asp:TreeView>
<asp:Label ID="labelStatus" runat="server" Text="Label" Visible="False"></asp:Label><br />
</asp:panel>


Spero si capisca qualcosa... non so proprio + dove guardare per risolvere il problema!
è un bel pezzo di codice, non ti prometto di guardarlo subito, appena posso però si.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.