3 domande

mercoledì 10 dicembre 2008 - 09.18

bolla111 Profilo | Senior Member

ciao...ho 3 richieste da fare:

1_io ho impostato i ruoli x il mio sito...come faccio a rendere visibile una colonna templatefield soltanto al ruolo "amministratore"?
2_sempre riguardo ai ruoli...io nella mia pagina default.aspx ho un gridview popolato tramite sqldatasource in modo che gni utente possa vedere solo i record appartenenti a se stesso (impostando quindi una condizione where che riceve un parametro in ingresso)...come faccio x permettere all'amministratore di visualizzare tutti i record?

3_come faccio a recuperare tutti i valori di cui ho bisogno da una query sql nella stessa pagina? mi spego...una volta connesso al database,se ho questa istruzione:
stringa=select valore1,valore2,valore3 from tabella1 where valore1=@valore1
come faccio nella stessa pagina a recuperare i 3 valori?

x marco rossi...l'ultimo mio thread l'ho segnalato come risolto ma in realtà non è così...puoi darci un occhiata ciao

Stroke Profilo | Junior Member


Le domande sono vaghe e quindi le risposte approssimative.
1. condizioni il visible se il ruolo è amministratore
2. prepari un sqlsourceAdministrator e nel pageload della pagina gli dici quale deve usare a secondo del ruolo
3. è supponibile che la stringa query che hai inserito sia parte del codice che alla fine riempie un dataset o un datatable, quindi devi accertarti che il risultato crei una sola riga e poi estrai i valori datatable.row(0).item("Valore1") o dataset.table(0).row(0).item(valore("Valore1").


ciao

Furio
http://www.opsi.ws

bolla111 Profilo | Senior Member

1_come faccio da codice? non conosco le istruzioni...
2_come faccio da codice? non conosco le istruzioni...
3_quella stringa di query è parte di codice...ma non so come utilizzarla x il mio scopo...devo x forza creare un datatable quindi?
grazie

Stroke Profilo | Junior Member

>1_come faccio da codice? non conosco le istruzioni...
cosa stai usando per visualizzare i dati? Lo chiedo perchè le istruzioni possono essere diverse da un oggetto all'altro, di norma vai sull'oggetto che vuoi rendere visibile/invisibile cerchi la proprietà visible e inserisci ='<%# iif(Ruolo = 'admin', true, false %>' oppure puoi farlo da codice intercettando il databind o il prerender del tua griglia dati.
>2_come faccio da codice? non conosco le istruzioni...
nell'evento page_load della pagina crei sqlsouce che ti serve con un if sul ruolo lo aggancia al tuo oggetto nella proprietà .datasource e lanci .databinding.

>3_quella stringa di query è parte di codice...ma non so come
>utilizzarla x il mio scopo...devo x forza creare un datatable
>quindi?
per forza non c'è niente, ma dove metti i dati dopo un interrogazione? il datatable è il più semplice, per poi essere utilizzato o consumato come si usa dire adesso.
>grazie
prego

Furio
http://www.opsi.ws

bolla111 Profilo | Senior Member

1_il controllo che uso è il grid view...io sto provando da codice a renderlo visibile...ma non trovo l'istruzione adatta...
2_quindi io devo creare un secondo sqldatasource? poi in base al tipo di ruolo viene caricato o il primo o il secondo? ma l'sqldatasource io l'ho configurato da codice markup..quindi dovrebbe eseguirlo prima giusto? come faccio a gestire la scelta del primo o del secondo sqldatasource da codice behind ?
3_provo col datatable

Stroke Profilo | Junior Member

alla domanda 1 rispondo questa sera perchè ora vado di corsa.
alla 2 sqlsource puoi lasciarlo a markup e crearne un secondo a markup, devi solo togliere al gridview il datasource, da markup.
Poi come ti dicevo dal codice, nell'evento page_load con l'if gridview.datasource = qua metti l'id del sqlsource che vuoi usare e fai gridview.binding
ciao
Furio
http://www.opsi.ws

bolla111 Profilo | Senior Member

1_aspetto...grazie
2_funziona
3_in costruzione...

Stroke Profilo | Junior Member

La risposta alla domanda 1:
prendi il tuo gridview, reinserisci temporaneamente il datasource così ti viene più rapidamente, apri lo smart tag, vai in modifica colonne, deflagghi le colonne automaiche, e aggiungi una ad una le colonne che ti servono.
Poi vai in html e cerchi
<asp:BoundField DataField="Tua Colonna" HeaderText="solo per admin"
SortExpression="Tua Colonna" />
ovviamente il datafield deve corrispondere alla colonna della tabella interogata
e qui lo metti così
<asp:BoundField DataField="Tua Colonna" HeaderText="solo per admin"
SortExpression="Tua Colonna" Visible'<%# iif(Ruolo = 'admin', true, false %>'/>

oppure se ti viene meglio
<asp:BoundField DataField="Tua Colonna" HeaderText="solo per admin"
SortExpression="Tua Colonna" Visible'<%# ControlloRuolo%>'/>
dove controllo ruolo e la funzione lato codice che gestisce che sarà così
function ControlloRuolo () as boolean
if Ruolo = "admin" then
ControlloRuolo = true
else
ControlloRuolo = false
end sub
Ovviamente Ruolo = "Admin" lo dovrai scrivere adeguato al codice
ciao

Furio
http://www.opsi.ws

bolla111 Profilo | Senior Member

non capisco questa istruzione
Visible='<%# iif(Ruolo = 'admin', true, false %>
non trovo il mio parametro ruolo...mi dice che non è dichiarato...

Stroke Profilo | Junior Member

Ti ho scritto che questo doveva essere adeguato per la tua situazione, dipende come gestisci i Ruoli,
potrebbe essere scritta così HttpContext.Current.User.IsInRole("admin"), ammesso e non concesso che tu usi la gestione System.Security, ma la gestione dei ruoli si può fare in diversi modi, ma l'istruzione è identica a quella della domanda 2.
poi scrivere iif(condizioni, vero , falso) è uguale a scrivere
if condizione then
vero
else
falso
end if.


anche "admin" deve essere adeguato alla denominazione che tu hai deciso sia quella del ruolo amministratore, che potrebbe anche essere "Pippo", lo decidi tu qual'è il ruolo che amministra, siccome tu non posti codice non poso sapere come ti muovi.
ciao

Furio
http://www.opsi.ws

bolla111 Profilo | Senior Member

x il momento ho risolto in questo modo: NomeGridview.Columns.Item(0).Visible = False
solo che mi secca per il fatto che se un giorno o l'altro la disposizione delle colonne cambia, diventa invisibile la colonna sbagliata...

Stroke Profilo | Junior Member

Non so come aiutarti, vuoi provare a postarmi il codice che hai scritto per selezionare il datasource quello che dici ok e il codice markup del gridview o veroficare che sia simile a questo copiato dall'help

<%@ page language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:detailsview
id="DetailsView1"
runat="server"
allowpaging="True"
datasourceid="SqlDataSource1"
autogeneraterows="False"
width="312px"
height="152px">
<fields>
<asp:boundfield
visible="False"
sortexpression="EmployeeID"
datafield="EmployeeID">
</asp:boundfield>

<asp:boundfield
sortexpression="LastName"
datafield="LastName"
headertext="LastName">
</asp:boundfield>

<asp:boundfield
sortexpression="FirstName"
datafield="FirstName"
headertext="FirstName">
</asp:boundfield>

<asp:boundfield
sortexpression="Title"
datafield="Title"
headertext="Title">
</asp:boundfield>

<asp:buttonfield text="Button">
<controlstyle font-bold="True" forecolor="Red" />
</asp:buttonfield>
</fields>
</asp:detailsview>

<asp:sqldatasource
id="SqlDataSource1"
runat="server"
selectcommand="SELECT * FROM Employees"
connectionstring="<%$ ConnectionStrings:MyNorthwind%>">
</asp:sqldatasource>

</form>
</body>
</html>
Furio
http://www.opsi.ws

bolla111 Profilo | Senior Member

va beh...x il momento lascio stare...grazie dell'aiuto
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5