.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Tech (http://www.dsy.it/forum/forumdisplay.php?forumid=189)
-- [Asp.Net] Update datagrid (http://www.dsy.it/forum/showthread.php?threadid=20147)


Posted by Sonia on 14-06-2005 19:54:

[Asp.Net] Update datagrid

Ho un problema con la funzione update del datagrid.
Uso vbscript.

Ho due problemi.
1)
http://www.icconcorezzo.brianzaest.it/prova.aspx

Il problema è questo:
quando faccio edit ed edito il testo, me lo memorizza nel db, ma non mi aggiorna la pagina. Se aggiorno, mi dà il dato che ho appena memorizzato. Ho provato a mettere un response.redirect dandogli la stessa pagina, ma non funziona.

2)
Devo fare un'area protetta da user e pass.
Il web.config l'ho impostato in questo modo:

code:
<configuration> <system.web> <compilation defaultLanguage="vb" debug="true" /> <authentication mode="Forms"> <forms name="auth" loginUrl="login.aspx" protection="All" timeout="30"> <credentials passwordFormat="Clear"> <user name="admin" password="admin" /> </credentials> </forms> </authentication> <authorization> <allow users="admin" /> <deny users="?" /> </authorization> </system.web> </configuration>


Se metto il web.config nella cartella che devo proteggere (nel mio caso net/admin) mi dà il seguente errore:

Errore di configurazione.
Descrizione: Si è verificato un errore durante l'elaborazione di un file di configurazione necessario per soddisfare la richiesta. Verificare i dettagli dell'errore specifico riportati di seguito e modificare il file di configurazione in modo appropriato.

Messaggio di errore del parser: Non è possibile utilizzare una sezione registrata come allowDefinition='MachineToApplication' al di sotto del livello di applicazione. L'errore può essere dovuto alla presenza di una directory virtuale non configurata come applicazione in IIS.

Errore nel codice sorgente:


Riga 3: <compilation defaultLanguage="vb" debug="true" />
Riga 4:
Riga 5: <authentication mode="Forms">
Riga 6: <forms name="auth" loginUrl="login.aspx"
Riga 7: protection="All" timeout="30">

Se lo metto nella cartella di root, non mi fa accedere a nessuna pagina aspx e mi rimanda alla pagina di login.

Grazie in anticipo

__________________
Spietata e diabolica!

"Questi libri non possono cancellare secoli di storia, specialmente se quella storia è sostenuta dal più grande best seller di tutti i tempi." Fraukman aveva sgranato gli occhi. "Non dirmi che Harry Potter parlava del Santo Graal."
"Parlavo della Bibbia." Fraukman aveva fatto una smorfia. "Dovevo aspettarmelo."


Posted by Rocco.Li on 14-06-2005 21:01:

1) Devi rifare il databind della datagrid al termine dell'edit
ergo devi rifare la query a db e ripopolare il controllo.

2) la configurazione e' corretta ma non te la applica con conseguente errore perche' la directory che stai cercando di proteggere non e' un directory virtuale di IIS.
Accedendo da pannello di controllo, tools amministrativi --> Internet Information Services, indiviadua la directory che ti interessa e virtualizzala.

se sono stato ostico, chiedimi pure ulteriori spiegazioni

Ciao

__________________
Alcuni uomini vedono le cose come sono e dicono: << Perche' ? >>
Io sogno le cose come non sono mai state e dico: << Perche' No ? >>
George Barnard Shaw, Commediografo.

"non preoccuparti troppo, comunque vada la vita, non ne uscirai vivo !" - anonimo


Posted by Sonia on 14-06-2005 23:45:

Originally posted by Rocco.Li
2) la configurazione e' corretta ma non te la applica con conseguente errore perche' la directory che stai cercando di proteggere non e' un directory virtuale di IIS.
Accedendo da pannello di controllo, tools amministrativi --> Internet Information Services, indiviadua la directory che ti interessa e virtualizzala.


è quello che ho letto cercando in internet.
devo contattare l'amministratore del server quindi...

grazie :)
quella del datagrid la provo domani, poi al massimo se ho problemi posso contattarti vero? :)

__________________
Spietata e diabolica!

"Questi libri non possono cancellare secoli di storia, specialmente se quella storia è sostenuta dal più grande best seller di tutti i tempi." Fraukman aveva sgranato gli occhi. "Non dirmi che Harry Potter parlava del Santo Graal."
"Parlavo della Bibbia." Fraukman aveva fatto una smorfia. "Dovevo aspettarmelo."


Posted by ripe on 15-06-2005 09:37:

Per quanto riguarda il controllo DataGrid ha ragione Rocco, non sapevo invece nulla sulla seconda questione. Grazie per il chiarimento, è utile anche a me!

__________________
«And if you ever smell christian blood up in the mountains, then get your axe and chop them down!»


Posted by Rocco.Li on 15-06-2005 10:46:

Originally posted by ripe
Per quanto riguarda il controllo DataGrid ha ragione Rocco, non sapevo invece nulla sulla seconda questione. Grazie per il chiarimento, è utile anche a me!


Sulla seconda questione potete notare che ogni volta che create una nuova Solution ASP.NET con VSTUDIO, viene creata di conseguenza una directory virtuale in IIS.
Infatti e lo stesso IIS che va a gestire tramite le impostazioni nel Web.Config la sicurezza, "l'aggancio" con il Framework.NET e' proprio la directory virtuale. Motivo percui, se volete proteggere solo una sottodirectory del vostro progetto inserendo un oppurtuno Web.Config dovete virtualizzarla.

__________________
Alcuni uomini vedono le cose come sono e dicono: << Perche' ? >>
Io sogno le cose come non sono mai state e dico: << Perche' No ? >>
George Barnard Shaw, Commediografo.

"non preoccuparti troppo, comunque vada la vita, non ne uscirai vivo !" - anonimo


Posted by ripe on 15-06-2005 10:49:

A me non piace molto la protezione via Web.config... preferisco lasciare l'accesso libero a tutti gli utenti da configurazione, e poi controllare pagina per pagina le credenziali... però ho capito come devo fare se sono costretto ad usarla!

__________________
«And if you ever smell christian blood up in the mountains, then get your axe and chop them down!»


Posted by Sonia on 15-06-2005 20:06:

Originally posted by ripe
A me non piace molto la protezione via Web.config... preferisco lasciare l'accesso libero a tutti gli utenti da configurazione, e poi controllare pagina per pagina le credenziali... però ho capito come devo fare se sono costretto ad usarla!


in che senso ripe?
tu come imposti le aree protette?

__________________
Spietata e diabolica!

"Questi libri non possono cancellare secoli di storia, specialmente se quella storia è sostenuta dal più grande best seller di tutti i tempi." Fraukman aveva sgranato gli occhi. "Non dirmi che Harry Potter parlava del Santo Graal."
"Parlavo della Bibbia." Fraukman aveva fatto una smorfia. "Dovevo aspettarmelo."


Posted by Sonia on 15-06-2005 20:10:

Originally posted by Rocco.Li
1) Devi rifare il databind della datagrid al termine dell'edit
ergo devi rifare la query a db e ripopolare il controllo.



ho poi controllato il mio script

alla fine dell'update gli faccio fare il databind

setto l'edititemindex a -1 così esco dalla funzione di edit e poi gli faccio fare il databind, ma non funziona come dovrebbe

code:
MyDataGrid.EditItemIndex = -1 BindDataGrid()


posso provare a fare una select al posto di quello, però avrei del codice ridondante

__________________
Spietata e diabolica!

"Questi libri non possono cancellare secoli di storia, specialmente se quella storia è sostenuta dal più grande best seller di tutti i tempi." Fraukman aveva sgranato gli occhi. "Non dirmi che Harry Potter parlava del Santo Graal."
"Parlavo della Bibbia." Fraukman aveva fatto una smorfia. "Dovevo aspettarmelo."


Posted by ripe on 15-06-2005 21:13:

Originally posted by Sonia
in che senso ripe?
tu come imposti le aree protette?


Ho creato una classe base da cui derivano tutte le pagine del sito e nel campo Roles imposto quali tipi di utenze possono visualizzare quella pagina (ne ho cinque in tutto: Developer, Administrator, Editor, Redactor, Helper)... nell'evento Page_Init controllo se l'utente è autenticato, controllo se il gruppo a cui appartiene è accreditato per quella pagina e in caso affermativo procedo.
Per l'autenticazione ho creato la classica pagina di login, sfruttando la classe FormsAuthentication senza utilizzare le proprietà del file Web.config. Le credenziali sono memorizzate nel database, con la password criptata con l'algoritmo SHA...

Spero di esserti stato utile! :)

__________________
«And if you ever smell christian blood up in the mountains, then get your axe and chop them down!»


Posted by Sonia on 16-06-2005 10:05:

Non riesco proprio a sistemare :(


code:
Dim objNomeCtrl As TextBox objNomeCtrl = CType(objArgs.Item.FindControl("txt_nome"), TextBox) 'crea sql per update ed esegue Dim strSQL As String strSQL = "UPDATE interne SET Nome='" & objNomeCtrl.Text & "' WHERE ID=" & MyDataGrid.DataKeys(objArgs.Item.ItemIndex) & "" ExecuteSQLStatement(strSQL) Dim cn As OleDbConnection Dim strConnect As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" _ & Server.MapPath("database\menu.mdb") 'crea ed apre una nuova connection Dim objConnect As New OleDbConnection(strConnect) objConnect.Open() 'crea un nuovo Command Dim objCommand As New OleDbCommand(strSQL, objConnect) Dim objDataReader As OleDbDataReader 'esegue sql con Datareader objDataReader = objCommand.ExecuteReader() MyDataGrid.DataSource = objDataReader 'setta EditItemIndex a -1 per uscire dalla funzione di edit MyDataGrid.EditItemIndex = -1 Dim strSelect As String strSelect = "SELECT * FROM interne where riferimento='2'" Try 'crea la connect e la apre Dim objConnect2 As New OleDbConnection(strConnect) objConnect2.Open() 'crea un Command ed esegue la sql Dim objCommand2 As New OleDbCommand(strSelect, objConnect2) objDataReader = objCommand2.ExecuteReader() Catch objError As Exception 'mostra gli errori outError.InnerHtml = "<b>* Error while accessing data</b>.<br />" _ & objError.Message & "<br />" & objError.Source & "<p />" Exit Sub ' e ferma l'esecuzione End Try MyDataGrid.DataSource = objDataReader MyDataGrid.DataBind()


ho provato sia a richiamare la funzione di datagrid principale, sia ad aggiungere la select in fondo alla funzione, ma il risultato non cambia

__________________
Spietata e diabolica!

"Questi libri non possono cancellare secoli di storia, specialmente se quella storia è sostenuta dal più grande best seller di tutti i tempi." Fraukman aveva sgranato gli occhi. "Non dirmi che Harry Potter parlava del Santo Graal."
"Parlavo della Bibbia." Fraukman aveva fatto una smorfia. "Dovevo aspettarmelo."


Posted by ripe on 16-06-2005 10:16:

Faccio fatica a leggere il codice scritto da altri! :)
Ma in linea di massima mi pare tutto corretto... sarà perché io non uso l'EditItemTemplate per modificare i dati!

Non capisco bene la sequenza delle operazioni che fai, cioè:
- prima aggiorni il database (ExecuteSQLStatement cos'è?)
- poi aggiorni la sorgente di dati ed esci dalla funzione di modifica, ma senza collegare i dati col DataBind
- successivamente leggi nuovamente i dati dalla tabella e li colleghi

__________________
«And if you ever smell christian blood up in the mountains, then get your axe and chop them down!»


Posted by Sonia on 16-06-2005 10:18:

Originally posted by ripe
Faccio fatica a leggere il codice scritto da altri! :)
Ma in linea di massima mi pare tutto corretto... sarà perché io non uso l'EditItemTemplate per modificare i dati!

Non capisco bene la sequenza delle operazioni che fai, cioè:
- prima aggiorni il database (ExecuteSQLStatement cos'è?)
- poi aggiorni la sorgente di dati ed esci dalla funzione di modifica, ma senza collegare i dati col DataBind
- successivamente leggi nuovamente i dati dalla tabella e li colleghi




ExecuteSQLStatement è solo una funzione per vedere quali dati mi passa nella sql

cmq anche se rileggo i dati (cosa inutile) non me li aggiorna uff

__________________
Spietata e diabolica!

"Questi libri non possono cancellare secoli di storia, specialmente se quella storia è sostenuta dal più grande best seller di tutti i tempi." Fraukman aveva sgranato gli occhi. "Non dirmi che Harry Potter parlava del Santo Graal."
"Parlavo della Bibbia." Fraukman aveva fatto una smorfia. "Dovevo aspettarmelo."


Posted by ripe on 16-06-2005 10:24:

Mi viene in mente una cosa... dove colleghi i dati la prima volta al datagrid prova a mettere (se non l'hai già fatto):

If Not Page.IsPostBack Then
*** il tuo vecchio codice ***
End If

__________________
«And if you ever smell christian blood up in the mountains, then get your axe and chop them down!»


Posted by Sonia on 16-06-2005 10:39:

Originally posted by ripe
Mi viene in mente una cosa... dove colleghi i dati la prima volta al datagrid prova a mettere (se non l'hai già fatto):

If Not Page.IsPostBack Then
*** il tuo vecchio codice ***
End If


io ho messo

If Not Page.IsPostBack Then
BindDataGrid()
End If

dove BindDataGrid() è la funzione principale del datagrid

__________________
Spietata e diabolica!

"Questi libri non possono cancellare secoli di storia, specialmente se quella storia è sostenuta dal più grande best seller di tutti i tempi." Fraukman aveva sgranato gli occhi. "Non dirmi che Harry Potter parlava del Santo Graal."
"Parlavo della Bibbia." Fraukman aveva fatto una smorfia. "Dovevo aspettarmelo."


Posted by ripe on 16-06-2005 10:45:

E fin qui va bene... nella BindDataGrid cosa c'è invece?

__________________
«And if you ever smell christian blood up in the mountains, then get your axe and chop them down!»


All times are GMT. The time now is 22:02.
Show all 15 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.