Da quello che ho letto allo start del thread ho capito che te devi realizzare una relazioni uno molti che ti permetta di associare ad una destinazione piu categorie .. avresti quindi sul db due tbl del tipo
Destinazione [TABELLA]
id intero //ChiavePrimaria
descrizione varchar(50)
Categoria[TABELLA]
id intero //ChiavePrimaria
nomeCategoria varchar(50)
idDestinazione int //Chiave secondaria che punta alla chiave primaria della tabella Destinazione
Se sei in questo caso puoi utlizzare diretmente questo codice(solo di esempio) altrimenti se il verso della relazione è al contrario devi solo scambiare le destinazioni con le categorie
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
TreeNode Root = new TreeNode();
Root.Text = "Elenco Cataloghi Presenti (pdf)";
Root.PopulateOnDemand = false;
String connStr = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
SqlConnection dbConn = new SqlConnection(connStr);
dbConn.Open();
String query = "SELECT * FROM [Destinazione]";
SqlCommand cmdQuery = new SqlCommand(query, dbConn);
SqlDataReader dataReaderDestinazione = cmdQuery.ExecuteReader();
if (dataReaderDestinazione.HasRows)
{
while (dataReaderDestinazione.Read())
{
string nomeDestinazione = (string)dataReaderDestinazione["descrizione"];
int idDestinazione = (int)dataReaderDestinazione["id"];
TreeNode DestinazioneCorrente = new TreeNode();
DestinazioneCorrente.Text = nomeDestinazione;
DestinazioneCorrente.Value = idDestinazione.ToString();
DestinazioneCorrente.PopulateOnDemand = false;
SqlConnection dbConn2 = new SqlConnection(connStr);
dbConn2.Open();
query = "SELECT * FROM [Categoria] WHERE ([idDestinazione] = @idDestinazione)";
SqlCommand cmdQuerycategoria = new SqlCommand(query, dbConn2);
cmdQuerycategoria.Parameters.AddWithValue("idDestinazione", idDestinazione);
SqlDataReader dataReaderCategoria = cmdQuerycategoria.ExecuteReader();
if (dataReaderCategoria.HasRows)
{
while (dataReaderCategoria.Read())
{
string nomeCategoria = (string)dataReaderCategoria["nomeCategoria"];
int idCategoria = (int)dataReaderDestinazione["id"];
TreeNode CategoriaCorrente = new TreeNode();
CategoriaCorrente.Text = nomeCategoria;
CategoriaCorrente.Value = idCategoria.ToString();
CategoriaCorrente.PopulateOnDemand = false;
DestinazioneCorrente.ChildNodes.Add(CategoriaCorrente);
}
}
dataReaderCategoria.Close();
Root.ChildNodes.Add(DestinazioneCorrente);
}
dbConn.Close();
}
TreeView1.Nodes.Add(Root);
}
}
ciao