Click del bottone da form e caricamento dati letti da DataSet

martedì 20 gennaio 2009 - 17.46

Leonida Profilo | Junior Member

Ciao,

Ancora un problema con DataSet. Ho scritto un programmino di prova per testare il caricamento e la lettura da DataSet, il problema è che sembra non riesca a intercettare l'evento click del pulsante, le ho provate tutte.

Posto il codice, chiaramente è una prova quindi non è perfetto e la procedura di caricamento dei dati nella textBox sovrascrive ripetutamente lo stesso valore:-


<form id="form1" runat="server">
&nbsp;<div id="DInfoUtenti" style="border-left-color: aqua; border-bottom-color: aqua; border-top-style: ridge; border-top-color: aqua; border-right-style: ridge; border-left-style: ridge; border-right-color: aqua; border-bottom-style: ridge">
<asp:Label ID="LNome" runat="server" Style="z-index: 100; left: 70px; position: absolute;
top: 86px" Text="Nome" Width="100px"></asp:Label>
<asp:TextBox ID="TBNome" runat="server" Style="z-index: 101; left: 170px; position: absolute;
top: 86px"></asp:TextBox>
<asp:Label ID="LCognome" runat="server" Style="z-index: 102; left: 70px; position: absolute;
top: 111px" Text="Cognome" Width="99px"></asp:Label>
<asp:TextBox ID="TBCognome" runat="server" Style="z-index: 103; left: 170px; position: absolute;
top: 111px"></asp:TextBox>
<asp:Label ID="LCF" runat="server" Style="z-index: 104; left: 70px; position: absolute;
top: 136px" Text="CF" Width="99px"></asp:Label>
<asp:TextBox ID="TBCF" runat="server" Style="z-index: 105; left: 170px; position: absolute;
top: 136px"></asp:TextBox>

<asp:Button ID="BAggiorna" runat="server" Style="z-index: 100; left: 185px; position: absolute;
top: 185px" Text="Aggiorna" Width="100px" />
<asp:Button ID="BCarica" runat="server" Style="z-index: 102; left: 74px; position: absolute;
top: 186px" Text="Carica" Width="100px" OnClientClick=BCarica_Click OnClick="BCarica_Click" />

</div>
</form>


protected void BCarica_Click(object sender, EventArgs e)
{
string stringaDiConnessione = "Data Source=.\\SQLEXPRESS;" +
"AttachDbFilename=|DataDirectory|\\Utenti.mdf;" +
"Integrated Security=True;" +
"User Instance=True";
string query = " SELECT * FROM Utenti ";

SqlConnection connessione = new SqlConnection(stringaDiConnessione);
SqlDataAdapter adapter = new SqlDataAdapter(query, connessione);
DataSet data = new DataSet();
adapter.Fill(data, "Utenti");

foreach (DataRow row in data.Tables["Utenti"].Rows)
foreach (DataColumn dc in data.Tables["Utenti"].Columns)
{
TBNome.Text = row[dc, DataRowVersion.Current].ToString();


}

}

Dimenticavo di dire che ho eseguito il debug e ho avuto conferma che nel gestore dell'evento non entra.

paoval72 Profilo | Senior Member

Ciao, eseguendo paro paro da copia il codice html che hai postato, a me l'evento del bottone si scatena.
Ci sono altri metodi invocati nella pagina (ad esempio nel page_load)? La pagina è un semplice aspx o è un controllo inserito in un altro controllo (ad esempio usercontrol)?

PV

Leonida Profilo | Junior Member

Guarda è un semplicissimo form, non ho fatto altro che inserire le TB e i bottoni, in pratica ho postato solo il codice che non è stato autogenerato da visual.

Leonida Profilo | Junior Member

Ora funziona!!!Bah, non ci sto a capire niente, a volte funziona a volte no...possibile?!Boh!!!Però chiaramente non fa quello che dovrebbe...In teoria dovrebbe creare un oggetto DataSet e caricare i dati letti da DB. Per visualizzare questi dati come faccio? L'esempio non sembra funzionare!!!

Nello specifico dovrei caricare ogni valore di una tupla in un differente TB.

Leonida Profilo | Junior Member

Vabbè, penso di aver capito dov'era l'errore, per i posteri...in pratica occorre impostare nel tag asp:Button OnCLick con il nome del gestore dell'evento e non OnClientClick.

Riguardo il caricamento delle informazioni, più o meno si usa il seguten codice per postare le informazioni da dataset, con riferimento al primo valore della prima tupla:

DataTable table = null;
DataColumn column = null;
DataRow row = null;

table = data.Tables["Utenti"];
column = data.Tables["Utenti"].Columns[0];
row = data.Tables["Utenti"].Rows[0];

Per stampare le informazioni in una TB quindi si scrive:

TBNome.Text = row[column].ToString();

Chiaramente è un esempio rapportato al mio caso, riferito a una tabella di un DB con nome, cognome e CF.

paoval72 Profilo | Senior Member

Ciao. Spiegami quel che vorresti fare. Il ciclo di foreach che hai creato sovrascrive ogni volta il testo della textbox
Se vuoi concatenarlo, usa il +
TBNome.Text += row[dc, DataRowVersion.Current].ToString();

ma avresti sempre solo un elenco di dati concatenati, se la query sul db restituisce più righe.
PV

Leonida Profilo | Junior Member

In realtà sto solo facendo qualche prova prima di aggiungere codice al mio progetto reale, se avessi problemi dopo sarebbe complicato trovare l'errore. Cmq ho risolto, ti ringrazio
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5