DeleteParameters

sabato 04 ottobre 2008 - 16.43

gae58 Profilo | Senior Member

salve,

in una webForm ho un sqlDataSource ed un paramentro che valorizzo nel pageLoad attraverso il nome dell'utente:
SqlDS.SelectParameters["A"].DefaultValue = UtenteID;.
Vorrei però eliminare il parametro nel caso fosse l'Amministratore a collegarsi.
Ho visto che c'è l'oggetto DeleteParameters, ma non ho capito come utilizzarlo, ho provato con:
SqlDS.DeleteParameters["A"];
ma non funziona.

Qualche aiuto?

grazie



Gaetano

alx_81 Profilo | Guru

>salve,
ciao

>in una webForm ho un sqlDataSource ed un paramentro che valorizzo nel pageLoad attraverso il nome dell'utente:
>SqlDS.SelectParameters["A"].DefaultValue = UtenteID;.

>Vorrei però eliminare il parametro nel caso fosse l'Amministratore a collegarsi.
Vorresti quindi non utilizzare il parametro nella query?

>Ho visto che c'è l'oggetto DeleteParameters, ma non ho capito come utilizzarlo, ho provato con:
>SqlDS.DeleteParameters["A"];
La DeletePrameters è la collezione dei parametri per l'eventuale comando di DELETE:

DeleteParameters Property
http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.sqldatasource.deleteparameters.aspx

>Qualche aiuto?
Secondo me puoi scegliere due strade.
- scrivi una datasource che voglia il parametro ed uno che non lo richiede ed in base all'accesso colleghi l'uno o l'altro.
- scrivi una select con una condizione che non ti consideri l'accesso amministratore (ad esempio WHERE @UtenteID IS NULL OR UtenteID = @UtenteID) e passi null se l'accesso è admin

>grazie
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gae58 Profilo | Senior Member

non va, in quanto nella tabella il titolare ha sempre un valore.

Mi sa che mi sono espresso male. Il risultato a cui voglio tendere è visualizzare per l'amministratore tutti i movimenti, mentre per gli utenti, solo quelli personali.

In prtatica dovrei togliere il WHERE, così da evitare il filtro per l'amministratore ed attivarlo per gli utenti


Qualche altro consiglio?

grazie


Gaetano

alx_81 Profilo | Guru

>Mi sa che mi sono espresso male. Il risultato a cui voglio tendere
>è visualizzare per l'amministratore tutti i movimenti, mentre
>per gli utenti, solo quelli personali.
>In prtatica dovrei togliere il WHERE, così da evitare il filtro
>per l'amministratore ed attivarlo per gli utenti
>Qualche altro consiglio?
Sinceramente i due consigli che ti ho dato prima mi sembrano corretti anche dopo la spiegazione.
Come ripeto, puoi scrivere due datasource, indicando in uno la query con il where sul titolare e nell'altro la query che ricava tutti i record indipendentemente dal titolare (nessuna where). Se l'utente che si logga è di tipo admin, colleghi come risultato il secondo datasource, in caso contrario usi quello col filtro.
E questa è una soluzione.
L'altra è scrivere un solo datasource indicando una query come la seguente:

SELECT <campi> FROM <tabella> WHERE (@titolare IS NULL OR titolare = @titolare)

In questo modo, se l'utente è di tipo admin, basta passare al parametro @titolare il NULL, viceversa, passi il vero valore del titolare e ti viene considerato il filtro.
Spero di essermi spiegato meglio e di aver capito il tuo quesito.

>grazie
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gae58 Profilo | Senior Member

ti ringrazio,

proverò il secondo metodo, in quanto lSqlDS è collegato ad una gridView e non so come fare per collegarla all'una o l'altra Sql.

ciao


Gaetano
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