Collegare i dati di una tabella a dei textBox

mercoledì 08 agosto 2007 - 19.15

gae58 Profilo | Senior Member

salve,

ho notato che personalizzare un detailsView è abbastanza complesso (almeno per me), ed intendevo capire come fare, una volta selezionata la riga di un gridView, collegare i dati della tabella alle textBox della form.

Qualcuno mi può dare un indizio?

garzie
Gaetano

_J_ Profilo | Senior Member

ciao!
a quanto ho capito vuoi far vedere ciò che le celle del tuo gridview contengono mediante delle textbox (correggimi se ho capito male...)

cmq prova con questa sintassi all'interno dell'evento GridViewTuo_SelectedIndexChanged:

TextBoxTua.Text = GridViewTuo.Rows[0].Cells[n].Text;
dove n è l'indice di cella o colonna (nb: la numerazione inizia da 0).

così ogni volta che selezioni una riga ti fa vedere nella TextBoxTua ciò che è contenuto alla colonna n

se invece vuoi aggiornare il detailsview in base a quello che selezioni dal gridvire, devi creare un datasource a parte per il detailsview, e la query che setterai in tale datasource prenderà il parametro proprio dal gridview da cui selezioni per vedere i dettagli...

spero di aver capito bene e di averti aiutato! Ciao!
_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

gae58 Profilo | Senior Member

grazie ho capito un'altra cosa.

Scusa se ti chiedo altre cose, ma mi servono per capire meglio come comportarmi.

La tua istruzione:
TextBoxTua.Text = GridViewTuo.Rows[0].Cells[n].Text;

non mi funzionava e leggendo in giro ho trovato questa sintassi:
GridViewRow riga = GridView1.SelectedRow;
TextBox2.Text = riga.Cells[1].Text;

Poi ho provato questa:
TextBox2.Text = GridView1.SelectedRow.Cells[1].Text;
e funziona.

Non so sintatticamente o per correttezza se dev'essere usata la prima o è lo stesso, in quanto la seconda è più corta.

Un'altra cosa, in questa maniera si possono visualizzare solo i campi che sono stati inseriti nella gridView, quindi ne ho inserito solo poche colonne nella gridView e volessi visualizzare dei campi non presenti non lo posso fare. Quindi penso che il collegamento alla texbox vada fatto leggendo i campi della tabella.
Mi potresti dare un aiuto anche in questo caso?

ti ringrazio



dove n è l'indice di cella o colonna (nb: la numerazione inizia da 0).

Gaetano

_J_ Profilo | Senior Member

ciao!

>Scusa se ti chiedo altre cose, ma mi servono per capire meglio
>come comportarmi.

fai bene a chiedere, se non chiedi non sai


>Non so sintatticamente o per correttezza se dev'essere usata
>la prima o è lo stesso, in quanto la seconda è più corta.

è la stessa cosa, ho preferito la seconda proprio perchè sintaticamente è più pratica


>Un'altra cosa, in questa maniera si possono visualizzare solo
>i campi che sono stati inseriti nella gridView, quindi ne ho
>inserito solo poche colonne nella gridView e volessi visualizzare
>dei campi non presenti non lo posso fare. Quindi penso che il
>collegamento alla texbox vada fatto leggendo i campi della tabella.
>Mi potresti dare un aiuto anche in questo caso?

di solito con le tabelle io aggiorno dei gridview, cmq ho anche usato questa sintassi:
TextBoxMia.Text = nomeMiaTabella.Rows[0]["nome_campo_che_mi_interessa"].ToString();

dove nomeMiaTabella è un oggetto di tipo DataTable, riempito precedentemente con un oggetto di tipo SqlDataReader mediante la sintassi:

SqlDataReader miolettore = mioComando.ExecuteReader(); //creo un lettore di dati
DataTable nomeMiatabella = new DataTable(); //creo la tabella
nomeMiaTabella.Load(miolettore); //carico la tabella con il contenuto del lettore (i record)

>ti ringrazio
figurati!

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

gae58 Profilo | Senior Member

>di solito con le tabelle io aggiorno dei gridview, cmq ho anche
>usato questa sintassi:
>TextBoxMia.Text = nomeMiaTabella.Rows[0]["nome_campo_che_mi_interessa"].ToString();
>
>dove nomeMiaTabella è un oggetto di tipo DataTable, riempito
>precedentemente con un oggetto di tipo SqlDataReader mediante
>la sintassi:
>
>SqlDataReader miolettore = mioComando.ExecuteReader(); //creo
>un lettore di dati
>DataTable nomeMiatabella = new DataTable(); //creo la tabella
>nomeMiaTabella.Load(miolettore); //carico la tabella con il contenuto
>del lettore (i record)

questa risposta mi ha un po' confuso.
Attualmente, come da tutorials letti, sto usando unicamente la classe SqlDataSource ed a mano non sto ancora facendo nulla.
Pensavo che bastasse tale classe per poter far tutto. Come logica mi è abbastanza chiaro quello che mi hai scritto, però non ne capisco ancora il senso.

Leggendo le proprietà/metodi) di SqlDataSource, ho visto che il dataSourceMode si può anche selezionare anche come DataReader, che è solo lettura ed è più veloce.

La cosa che non mi è ancora chiara è che dovrò avere 2 o + SqlDataSource (od altri tipi di collegamento) per poter gestire le varie tabelle che m'interessano.

L'esempio che mi hai postato e che tu usi è dato dall'esperienza (e quindi conviene fare così), oppure è consigliato?

Un ultima domanda, questo sistema si usa anche in ASP.NET 2.0? chiedo ciò in quanto ho letto che con la versione 2, tante cose sono cambiate.

Proverò a fare delle prove per vedere se riesco ad assegnare il valore del campo della tabella (e non del gridView) ad una textBox.

Grazie

ti farò sapere

ciao

Gaetano

gae58 Profilo | Senior Member

>TextBoxMia.Text = nomeMiaTabella.Rows[0]["nome_campo_che_mi_interessa"].ToString();
>
>dove nomeMiaTabella è un oggetto di tipo DataTable, riempito
>precedentemente con un oggetto di tipo SqlDataReader mediante
>la sintassi:

ho dato un'occhiata (a SqlDataSource) e non ho trovato nulla che mi permettesse di usare i campi da tale oggetto.

Cosa significa, che se uso gli oggetti predefiniti (tipo gridView od altro), i collegamenti sono già pronti, ma se voglio fare qualcosa leggermente di diverso, devo crearmi qulcosa di diverso?

Se è così, conviene studiare direttamente questi.

Dimmi se sbaglio
Gaetano

_J_ Profilo | Senior Member

ciao!
quello che ti ho detto vale per asp.net2, infatti è quello che uso io... e credevo fosse la versione che usassi anche tu.
e forse è proprio per questo che non ti ritrovi, perchè le cose un po' cambiano rispetto alla versione 1.1... ma la logica cmq dovrebbe essere quella...
un'altra cosa: questa stanza del forum è dedicata ad asp.net 2, se usi asp.net 1.0 o 1.1 c'è la stanza apposita
http://www.dotnethell.it/forum/ASP.NET-1.1.aspx

>La cosa che non mi è ancora chiara è che dovrò avere 2 o + SqlDataSource
>(od altri tipi di collegamento) per poter gestire le varie tabelle
>che m'interessano.

dipende quello che devi fare, perchè in un sqldatasource scrivi delle istruzioni sql per manipolare il tuo database, e in base a quello che devi fare cambiano le tabelle che usi, i campi che selezioni ecc... infatti mi è capitato alle volte di dover usare più datasource su una stessa tabella proprio per fare delle cose diverse in base a contesti diversi.. per fare capire poi alla tabella quale datasource usare ho impostato la proprietà datasourceid della tabella stessa sul nome del datasource che mi interessa...
ora non so se c'è qc altra soluzione, io ho iniziato da qc mese a lavorare con asp.net2 ed ho usato questo approccio, e mi sono trovato bene...

>L'esempio che mi hai postato e che tu usi è dato dall'esperienza
>(e quindi conviene fare così), oppure è consigliato?

come ti ho detto poco fa, ho iniziato da poco, e mi è stato consigliato da altri, e mi sono trovato molto bene, proprio per la rapidità che comporta quella sintassi


>Proverò a fare delle prove per vedere se riesco ad assegnare
>il valore del campo della tabella (e non del gridView) ad una
>textBox.
>
ricorda però che la sintassi che ti ho dato è asp.2.. riadattala al tuo caso (non dovrebbe essere difficile visto che la logica è quella)

>Grazie
>ti farò sapere
ok!

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

_J_ Profilo | Senior Member

>ho dato un'occhiata (a SqlDataSource) e non ho trovato nulla
>che mi permettesse di usare i campi da tale oggetto.

con la sintassi del datatable che ti ho dato, il sqldatasource non lo richiami proprio, il sqldatasource lo usi con i controlli predefiniti
>Cosa significa, che se uso gli oggetti predefiniti (tipo gridView
>od altro), i collegamenti sono già pronti, ma se voglio fare
>qualcosa leggermente di diverso, devo crearmi qulcosa di diverso?

esatto, in questo modo (o almeno io ho fatto così, e funziona...):

string tuaquery= "SELECT ......"; //è la query che userai

//imposti la connessione a database
SqlConnection tuaconnessione = new SqlConnection("tua_stringa_connessione_al_database");

//imposti un oggetto Command per poter manipolare il tuo database, per dire alla query che hai creato prima dove deve lavorare e che parametri usare (se ce ne sono)
SqlCommand tuo_oggetto_command = new SqlCommand(tuaquery, tuaconnessione);

//impostazione dei parametri della query che hai creato, se ce ne sono
SqlParameter nome_parametro=new SqlParametr ("nome_parametro", SqlDbType.tipo_parametro); //lo dichiaro con il nome(rigorosamente uguale a quello della query) ed il tipo(int, char ecc)

tuo_oggetto_command.Parameters.Add(nome_parametro); //e lo aggiungo al command

try
{
tuaconnessione.Open(); //apro la connessione...
}
catch //in caso di problemi
{
tuaconnessione.Close(); //chiudi connessione
tuaconnessione.Open(); //e riapri
}

SqlDataReader lettore = tuo_oggetto_command.ExecuteReader(); //creo un lettore di dati che...

DataTable tabella = new DataTable();
tabella.Load(lettore); //...caricherà velocemente la tabella con il contenuto del lettore (i record)

tuo_oggetto_command.Dispose(); //rilascia tutto
tuo_oggetto_command= null;

tuaconnessione .Close(); //chiudi connessione, devi farlo non appena possibile


cmq questa è la sintassi per asp.net2, è quello che uso, la sintassi per 1.0 o 1.1 non la conosco, ma come ti ho detto nel precedente post, la logica è quella...

spero che quanto ho scritto ti serva...
ciao!
_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

gae58 Profilo | Senior Member

ti ringrazio,

probabilmente non ti ho detto la cosa più importante.

Mi sono avvicinato adesso al mondo web e non alcuna esperienza nè di VS, nè di ASP.NET, nè di C# ed internet.

Ho letto i vari tutorial che ci sono in giro e qualche libro che ho comprato, ma ancora non mi è chiara la gestione dei dataBase.

La richiesta di ASP.NET 2.0 è dovuta proprio al fatto che iniziando adesso, preferisco iniziare con l'ultima versione.

Penso tra un po' di partecipare a qualche corso.

Attualmente sto ancora studiando, partendo dal login, e sto facendo delle prove (spostanso il mio piccolo sito web in ASP.NET) e, spesso pongo delle domande che servono per capire meglio le classi e come si programma.

Scusa se sono stato poco chiaro, ma se non capisco bene le cose non riesco ad andare avanti.

Farò un po' di pratica sull'esempio che mi hai postato, penso vada inserito nella page_load

ciao

Gaetano

_J_ Profilo | Senior Member

>Farò un po' di pratica sull'esempio che mi hai postato, penso
>vada inserito nella page_load

quel codice non te lo consiglio nel page_load, ma nei gestori degli eventi di pulsanti, gridview ecc , in modo che puoi controllare tu quando aprire la connessione a database e quando lavoraci...
ad esempio quando fai doppio click su un pulsante appena creato nel designer, vieni automaticamente portato nel file aspx.cs dove puoi scrivere il codice che viene scatenato alla pressione del pulsante stesso, questo nel linguaggio che vuoi (VB.net, c# ecc...), e quindi nulla ti impedisce di usare ad esempio un pulsante per l'accesso al database..

>Penso tra un po' di partecipare a qualche corso.
>Attualmente sto ancora studiando, partendo dal login, e sto facendo delle prove (spostanso il mio piccolo sito web in ASP.NET) e, >spesso pongo delle domande che servono per capire meglio le classi e come si programma.

fai bene a documentarti, e a passare ad asp.net2, e fai bene anche a seguire dei corsi, questi ultimi ti daranno un grande aiuto per imparare...

>Scusa se sono stato poco chiaro, ma se non capisco bene le cose non riesco ad andare avanti.
tranquillo, non è successo nulla, e la tua filosofia è ottima per imparare ;)

in bocca al lupo!

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

gae58 Profilo | Senior Member

>>Farò un po' di pratica sull'esempio che mi hai postato, penso
>>vada inserito nella page_load
>
>quel codice non te lo consiglio nel page_load, ma nei gestori
>degli eventi di pulsanti

scusa ma in questa maniera ogni volta si deve eseguire il codice.
Se lo metto nel pageLoad, lo istanzio una sola volta e lo posso usare sempre.

Forse sbaglio, forse la questione è che dimentico che ogni volta viene fatta una richiesta a l server e quindi i collegamento vanno fatti volta per volta.

Sbaglio o è così


Gaetano

gae58 Profilo | Senior Member

Allora, vediamo se ci ho capito qualcosa.

Per il collegamento a mano bisogna
1) Collegarre il dataBase
2) Collegare la qry alla Tabella che interessa
3) Collegare la Tabella all'oggetto che interessa.

ho creato una form e vi ho inserito un gridView ed un bottone. Al click del bottone collega il dataBase, questo è il codice:
private void ConnDataBase()
{
string connectionString = "Server=localhost;" +
"Database=Sito";

SqlConnection conn = new SqlConnection(connectionString);

try
{
Response.Write("Leggo");
conn.Open();
Response.Write("Collegato");
}
catch (SqlException ex)
{
}

}

Ho preferito un func così se dov'esse servire + volte è disponibile.

mi sono fermato qui perchè penso che non si sia collegato, in qaunto mi dà solo leggo e non collegato.
Come faccio a sapere se il collegamento è andato a buo fine?

Ho letto che si può recuperare la stringa di connessiona anche dal ewb.config, tu ne sai qualcosa?

Gaetano

_J_ Profilo | Senior Member

>Al click del bottone collega il dataBase, questo è il codice:
> private void ConnDataBase()
> {
> string connectionString = "Server=localhost;" +
> "Database=Sito";
>
>SqlConnection conn = new SqlConnection(connectionString);
>
> try
> {
> Response.Write("Leggo");
> conn.Open();
> Response.Write("Collegato");
> }
> catch (SqlException ex)
> {
> }
>
> }
>
>Ho preferito un func così se dov'esse servire + volte è disponibile.
>
>mi sono fermato qui perchè penso che non si sia collegato, in
>qaunto mi dà solo leggo e non collegato.
>Come faccio a sapere se il collegamento è andato a buo fine?
>

hai dimenticato il command nella tua (devo dire molto comoda) funzione.. il command va messo prima dell'open, se noti bene esso collega la tua query alla stringa di connessione, e quindi serve metterlo prima.
se sei connesso o meno te lo dice la tua funzione stessa.. ecco perchè ti ho detto che è comoda...

>Ho letto che si può recuperare la stringa di connessiona anche
>dal ewb.config, tu ne sai qualcosa?

sì, ho fatto qualcosa del genere... vai nel web.config e sotto la sezione <configuration> aggiungi la sezione <connectionStrings> nella quale dovrai scrivere:

<connectionStrings>
<add name="nometuastringaconn" connectionString="Data Sourcetuodatasource;AttachDbFilename=tuodatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient" />
</connectionStrings>

per richiamare poi da codice quanto hai scritto, ti basterà editare semplicemente nel file aspx.cs
SqlConnection tuaconnessione = new SqlConnection(ConfigurationManager.ConnectionStrings["nometuastringaconn"].ConnectionString);

E ora per completare l'opera ti do pure una dritta in caso non conoscessi la connection string:
crea un file di testo vuoto e cambiane l'estensione da txt in udl, dopodichè clicca per aprirlo e segui la procedura guidata che ti ritroverai. alla fine chiudi il file salvando e cambia ancora esternsione, ora da udl a txt... ti ritroverai la stringa di connessione bella e fatta.

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

gae58 Profilo | Senior Member

scusa se insisto, ma mi dà un errore su conn.Open() e non capito perchè.

Questo è il codice:
private void ConnDataBase()
{
string connectionString = "Server=localhost;" + "Database=Sito";

SqlConnection conn = new SqlConnection(connectionString);

SqlCommand Qry = new SqlCommand("SELECT * FROM Programmi", conn);

conn.Open();

SqlDataReader reader = Qry.ExecuteReader();

while (reader.Read()) ;
Campo1.Text = reader.GetString(1);

Response.Write("Collegato");

}
ho aggiunto anche conn nell'sql command.
Non è che devo dare i percordo della cartella dove sta il databse? (penso però che dovrebbe prenderlo dalla connessione)
Forse localHost???????


e questa è la stringa di connessione nel web.config:
<connectionStrings>
<add name="Sito" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Sito.mdf;Integrated Security=True;User Instance=True"
</connectionStrings>

mi potresti dire dove sbaglio?


Gaetano

gae58 Profilo | Senior Member

Allora, questo codice funziona:
private void ConnDataBase()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Sito"].ConnectionString);
SqlCommand Qry = new SqlCommand("SELECT * FROM Programmi", conn);

conn.Open();

SqlDataReader reader = Qry.ExecuteReader();

GridView1.DataSource = reader;
GridView1.DataBind();
}

La stringa di connessione precedente continua a non Funzionare, probabilmente è il localHost.

Ritengo molto comoda la class ConfigurationeManager (penso che userò sempre questa), in quanto ti permette di usare la connessione centralizzata nel web.config. Non so poi, se ci siano delle controindicazioni.

Adesso farò delle prove per capire la dritta che mi hai dato
grazie

Gaetano

_J_ Profilo | Senior Member

>scusa se insisto, ma mi dà un errore su conn.Open()
invece fai bene ad insistere...impari di più

>Questo è il codice:
>private void ConnDataBase()
> {
>string connectionString = "Server=localhost;" + "Database=Sito";
>
>SqlConnection conn = new SqlConnection(connectionString);
>
>SqlCommand Qry = new SqlCommand("SELECT * FROM Programmi", conn);
>
> conn.Open();
>
> SqlDataReader reader = Qry.ExecuteReader();
>
> while (reader.Read()) ;
> Campo1.Text = reader.GetString(1);
>
> Response.Write("Collegato");
>
> }
>ho aggiunto anche conn nell'sql command.
>Non è che devo dare i percordo della cartella dove sta il databse?
>(penso però che dovrebbe prenderlo dalla connessione)
>Forse localHost???????

quello è sicuro che glielo devi dire nella stringa di connessione...

>e questa è la stringa di connessione nel web.config:
> <connectionStrings>
><add name="Sito" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Sito.mdf;Integrated
>Security=True;User Instance=True"
> </connectionStrings>

non appena ho visto |DataDirectory| mi sono ricordato del fatto che se lo usavo mi creava dei problemi... ed è per questo che nella mia connstring non l'ho più usato..prova a dare la posizione del database in maniera esplicita... è così che a me funzionava

cmq una volta che hai specificato la connstring nel web config non hai bisogno di impostarla lato c#.. hai impostato 2 volte una connessione, e potrebbe essere anche che non sa a quale riferirsi
usa solo una delle due connessioni, magari prova prima con quella del webconfig (attenzione: devi però togliere la funzione conndatabase() e aprire direttamente la connessione dopo aver richiamato
SqlConnection connessione = new SqlConnection(ConfigurationManager.ConnectionStrings["nome_conn_nel_webconfig"].ConnectionString);)

poi prova con quella sqlcommand (te l'ho descritta nel post del lun 13 ago 2007, però nel webconfig non devi impostare nulla)
_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

gae58 Profilo | Senior Member

E ora per completare l'opera ti do pure una dritta in caso non conoscessi la connection string:
crea un file di testo vuoto e cambiane l'estensione da txt in udl, dopodichè clicca per aprirlo e segui la procedura guidata che ti ritroverai. alla fine chiudi il file salvando e cambia ancora esternsione, ora da udl a txt... ti ritroverai la stringa di connessione bella e fatta.

In VS ho creato un file TXT, l'ho chiuso, ho cambiato l'estensione, l'ho aperto, ma non mi da' niente.

Forse devo settare qualcosa?


Gaetano

gae58 Profilo | Senior Member

hai dimenticato il command nella tua (devo dire molto comoda) funzione.. il command va messo prima dell'open, se noti bene esso collega la tua query alla stringa di connessione, e quindi serve metterlo prima.
se sei connesso o meno te lo dice la tua funzione stessa.. ecco perchè ti ho detto che è comoda...

Per comoda intendi dire che mi dà lui l'errore?
e come fa?


Gaetano

_J_ Profilo | Senior Member

>In VS ho creato un file TXT, l'ho chiuso, ho cambiato l'estensione,
>l'ho aperto, ma non mi da' niente.
>

NON nel vs, ma sul desktop... crea normalmente col tasto dx un file e lo rinomini...stavolta quello impreciso sono stato io

scuuuuuuuuuusa...

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

_J_ Profilo | Senior Member

>Per comoda intendi dire che mi dà lui l'errore?
>e come fa?

mi riferivo al post del lun 13 ago 2007 - 16.44 che hai scritto tu, dove hai implementato una funzione che, se riesce a connettersi, te lo dice, sennò nisba.. è la logica della funzione che tu stesso hai creato a dirti che riesci a connetterti o meno, ecco perchè ti ho detto che è comoda


_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

_J_ Profilo | Senior Member

>Allora, questo codice funziona:
> private void ConnDataBase()....


è quel datadirectory che (non so come mai) non capisce il localhost... o meglio, dovrebbe indicarlo lui il localhost... cmq il webconfig è + che comodo, ed infatti pure io uso sempre quello


>private void ConnDataBase()
>{
>SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Sito"].ConnectionString);
>SqlCommand Qry = new SqlCommand("SELECT * FROM Programmi", conn);

>conn.Open();

>SqlDataReader reader = Qry.ExecuteReader();

>GridView1.DataSource = reader;
>GridView1.DataBind();
>}

hai poi integrato nella tua funzione il configuration manager.. bravo, ottima idea senza poi riscrivere tutto ogni volta

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

gae58 Profilo | Senior Member

ti ringrazio per la disponibilità e l'aiuto, mi hai permesso di capire parecchie cose

ciao
Gaetano

_J_ Profilo | Senior Member

>ti ringrazio per la disponibilità e l'aiuto, mi hai permesso
>di capire parecchie cose

quando vuoi...
_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

gae58 Profilo | Senior Member

>TextBoxMia.Text = nomeMiaTabella.Rows[0]["nome_campo_che_mi_interessa"].ToString();
>
>dove nomeMiaTabella è un oggetto di tipo DataTable, riempito
>precedentemente con un oggetto di tipo SqlDataReader mediante
>la sintassi:


Scusa se riprendo una tua precedente risposta, ma dopo aver capito come collegare il database, m'interessava capire cosa e come fare le possibili operazioni.

Qui è presente il codice per il collegamento al database ed ad una gridView:
private void ConnDataBase()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Sito"].ConnectionString);
SqlCommand Qry = new SqlCommand("SELECT * FROM Programmi", conn);

conn.Open();

SqlDataReader reader = Qry.ExecuteReader();

GridView1.DataSource = reader;
GridView1.DataBind();

}


protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
Label1.Text = "recchia";
Label1.Text = GridView1.SelectedRow.Cells[1].Text;
}

Dalla tua risposta, se ho capito bene, posso leggere la tabella.
Le ho provate in tutte le maniere, ma non ci sono riuscito.
Nella grid ho inserito il tasto select, così posso effettuare la selezione.
La labeltext l'ho collegata e funziona, successivamente l'ho collegata alla tabella, ma non funziona, o meglio sbaglio a scrivere il codice, in quanto non ho capito miaTabella a quel oggetto si riferisce.

ciao
Gaetano

_J_ Profilo | Senior Member

>Scusa se riprendo una tua precedente risposta...
scusa per cosa? hai fatto bene invece...

se la query ritorna dati, usi il DataAdapter con la fill per popolare un dataset, oppure l'ExecuteReader del command per riempire un datareader (metodo load(lettore))
almeno io faccio così per vedere i dati che pesco con una query...

>GridView1.DataSource = reader;
non mi risulta si faccia così, se non sbaglio prima di passare i dati al gridview devi passarli prima al datareader o al dataset...
cmq ho anche visto questa sintassi (che non ho mai usato, cmq ti potrebbe servire...):
DataView vedicolonna= New DataView(dataset.Tables("tuacolonna")) //cmq passi sempre dal dataset
GridView.DataSource = vedicolonna
vedicolonna.Sort = "NomeCamposecondocuivuoiordinare"
GridView.DataBind()

dove si fa l'uso del dataview che fa vedere i dati di un datatable... ora non so se fa al caso tuo, ma io te l'ho detto comunque.
eccoti un link: http://msdn2.microsoft.com/it-it/library/fdcwwhez(VS.80).aspx

miatabella invece è un oggetto di tipo datatable, riempito con il reader.. la sintassi è in uno dei post precedenti
_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

gae58 Profilo | Senior Member

ciao,

forse ho capito cosa volevi dirmi per il dataSet.

Non so se usi gli ObjetctDataSource, ho letto che conviene utilizzare questi, rispetto a SqlDataSource, per vari motivi, non ultimo la sicurezza.

Ho letto come si fa a creare un oggetto, ed ho fatto delle prove.

Nella Scheda Seleziona un Oggetto Business, mi dice che devo selezionare dataAccess, ma ho visto che come oggetto dati ho solo TableAdapter.
Non so la differenza tra i 2 e non so perchè non mi metta dataAccess.
Ho notato che mi crea lui la qry e le opzioni per l'inserimento, la modifica etc.

Forse con questo oggetto posso leggere direttamente la tabella?

Tu come fai

ciao

Gaetano

_J_ Profilo | Senior Member

>ciao,
ciao

>Non so se usi gli ObjetctDataSource, ho letto che conviene utilizzare
>questi, rispetto a SqlDataSource, per vari motivi, non ultimo
>la sicurezza.
sì, ogni tanto li uso, ma solitamente quando devo usare stored procedures al posto di semplici query...

>Nella Scheda Seleziona un Oggetto Business, mi dice che devo
>selezionare dataAccess, ma ho visto che come oggetto dati ho
>solo TableAdapter.
la procedura che seguo io è questa: in primis creo un file .xsd ( che poi sono dei dataset), mediante il tasto destro sulla cartella app_code in esplora soluzioni(se non ce l'hai, creala tu), e scelgo 'aggiungi nuovo item'... dopodichè scelgo dataset... parte in automatico un wizard che mi permetterà di creare query, stored procedure o anche di usare stored e query create in precedenza.
dopo i vari passaggi, il tutto sarà salvato sotto forma di metodi fill(per riempire un datatable) /getdata (per restituire un datatable) all'interno di una classe di tipo tableadapter...
poi salvo il file xsd.
dopo creo l'objectdatasource e lo associo all'oggetto business appena creato, e proseguendo con la procedura guidata mi rivedrò nuovamente il metodi fill/getdata creati nel file xsd, che quindi potrò usare...
E se non sbaglio il dataaccess è proprio il file xsd..

>Forse con questo oggetto posso leggere direttamente la tabella?
di solito con gli objectdatasource io riempio dei controlli (gridview, ecc...), e stando alle definizioni che conosco i metodi fill e getdata riempiono dei datatable, non li leggono... cmq considera il fatto che neanche io sono tanto esperto, e quindi non è che so proprio tutto su queste cose, e quindi potresti avere ragione tu su questo punto..
spero cmq di essere stato chiaro..
ciao
_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5