Niente da fare, ho provato in tutti i modi ma non ce l'ho fatta; quindi ho deciso di cambiare strategia e visualizzare uno ad uno i vari tag in diverse text box grazie alla proprietà databindings.
Ora però mi è sorto un nuovo problema: ho incontrato un altro file xml con una formattazione particolare:
codice:
<?xml version="1.0" encoding="utf-8" ?>
- <Connections>
- <Connection>
<Nome>Conn1</Nome>
- <ConnectionString>
<NOMEAPP>App1</NOMEAPP>
<PROVIDER>SQLOLEDB.1</PROVIDER>
<DATASOURCE>server1</DATASOURCE>
<CATALOG>databas1</CATALOG>
<USERID>user1</USERID>
<PASSWORD />
<LANGUAGE>ITALIAN</LANGUAGE>
</ConnectionString>
<PathSQL>c:\Programmi\SQL</PathSQL>
<Tabelle />
</Connection>
- <Connection>
<Nome>Conn2</Nome>
- <ConnectionString>
<NOMEAPP>App2</NOMEAPP>
<PROVIDER>server2</PROVIDER>
<DATASOURCE>database2</DATASOURCE>
<CATALOG />
<USERID>user2</USERID>
<PASSWORD>password</PASSWORD>
<LANGUAGE>ITALIAN</LANGUAGE>
</ConnectionString>
<PathSQL>C:\SQL</PathSQL>
- <Tabelle>
-
<Tabella NomeLogico="nomelogico1">nomefisico1</Tabella>
<Tabella NomeLogico="nomelogico2">nomefisico2</Tabella>
<Tabella NomeLogico="nomelogico3">nomefisico3</Tabella>
-
<Tabella NomeLogico="nomelogico4">nomefisico4</Tabella>
<Tabella NomeLogico="nomelogico5">nomefisico5</Tabella>
</Tabelle>
</Connection>
</Connections>
Su questo xml ho dovuto visualizzare i tag di connection(NomeConn e pathSQL) e connectionstring(PROVIDER,NOMEAPP,LANGUAGE,ecc..) in alcune textbox e me la sono cavata con questo codice inserendo i seguenti elementi nel mio windows form:
Connection1:Oggetto DataSet tipizzato
Gli altri si capiscono credo
codice:
Private Sub Pvisualizza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Pvisualizza.Click
liberarisorsetxt()
Connections1.Clear()
Connections1.ReadXml(TPercorso.Text)
ComboBox1.Enabled = True
End Sub
Private Sub Psalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Psalva.Click
Connections1.WriteXml(TPercorso.Text)
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
TPercorso.Text = "C:/file.xml"
ComboBox1.DataSource = Connections1.Connection
ComboBox1.DisplayMember = Connections1.Connection.NomeColumn.ToString
ComboBox1.ValueMember = Connections1.Connection.Connection_IdColumn.ToString
ComboBox1.Enabled = False
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
If (Pvisualizza.Focused = True) Then
Exit Sub
End If
liberarisorsetxt()
TNomeConn.DataBindings.Add("Text", Connections1.Connection.Rows(ComboBox1.SelectedIndex), "Nome")
TProvider.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "PROVIDER")
Tserver.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "DATASOURCE")
TDatabase.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "CATALOG")
TUtente.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "USERID")
Tpassword.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "PASSWORD")
Tlanguage.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "LANGUAGE")
TPathSQL.DataBindings.Add("Text", Connections1.Connection.Rows(ComboBox1.SelectedIndex), "PathSQL")
DataGridView1.DataSource = Connections1.Tabella
DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
End Sub
Public Sub liberarisorsetxt()
TNomeConn.DataBindings.Clear()
TProvider.DataBindings.Clear()
Tserver.DataBindings.Clear()
TDatabase.DataBindings.Clear()
TUtente.DataBindings.Clear()
Tpassword.DataBindings.Clear()
Tlanguage.DataBindings.Clear()
TPathSQL.DataBindings.Clear()
DataGridView1.DataBindings.Clear()
TNomeConn.Clear()
TProvider.Clear()
Tserver.Clear()
TDatabase.Clear()
TUtente.Clear()
Tpassword.Clear()
Tlanguage.Clear()
TPathSQL.Clear()
End Sub
End Class
In pratica quando premo visualizza nella combobox si caricano i nomi dei vari tag <connection>(in questo caso si caricano Conn1 e Conn2) e, selezionando uno di questi nomi delle connessioni dalla combobox nelle varie textbox compaiono i vari tag relativi a QUELLA connessione.
Fino a qui tutto corretto, il problema risiede nel datageidview:
Infatti esso mi mostra tutte le tabelle non quelle della SINGOLA connessione selezionata.
Ho provato di tutto, ma non riesco a selezionare i singoli tag<tabelle> delle singole connessioni da dare in "pasto" al datasource del datagridview.
Inoltre mi piacerebbe creare un bottone per poter inserire una nuova connection completa di tutti i tag (compreso ConnectionString che a sua volta contiene altri tag
) ma purtroppo riesco a creare solo dei file xml NON indentati(cioè ConnectionString non è all'interno del Tag Connection, dove dovrebbe essere
);inoltre dovrei utilizzare la connection1 per aggiungere un nuova connection e quindi utilizzare il dataset per scrivere nel file Xml
Se potete aiutarmi ve ne sarei molto grato e vi ringrazio in anticipo per il vostro tempo.