Image button in grid view solo su alcune righe

mercoledì 06 maggio 2009 - 16.49

19alessandro84 Profilo | Newbie

salve a tutti,
ho una gridview in cui ho un campo con tre bottoni e vorrei che in alcune righe comparissero ed in altre no a seconda del valore di un altro campo della stessa gridview.
come posso fare???

questo è il codice della mia griglia

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

la griglia la carico da un dataset:
DataSet d = /*mia query*/
Griglia.DataSource = d;
Griglia.DataBind();

i pulsanti del templatefield devono comparire tutti e tre nel caso in cui il campo stato sia in un valore, uno solo in caso il valore sia un'altro e nessuno in un terzo caso.
non so se mi sono spiegato bene..
si puo fare questa cosa??

4mane Profilo | Junior Member

Nella procedura _RowDataBound, scrivi quanto segue:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

19alessandro84 Profilo | Newbie

>Nella procedura _RowDataBound, scrivi quanto segue:
>
>Protected Sub Griglia_RowDataBound(ByVal sender As Object, ByVal
>e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
>Griglia.RowDataBound
>
> If e.Row.RowType = DataControlRowType.DataRow Then
> If Condizione1 Then
> e.Row.Cells(8).Controls(0).Visible = True
> e.Row.Cells(8).Controls(1).Visible = True
> e.Row.Cells(8).Controls(2).Visible = True
> ElseIf Condizione2 Then
> e.Row.Cells(8).Controls(0).Visible = False
> e.Row.Cells(8).Controls(1).Visible = True
> e.Row.Cells(8).Controls(2).Visible = False
> Else
> e.Row.Cells(8).Controls(0).Visible = False
> e.Row.Cells(8).Controls(1).Visible = False
> e.Row.Cells(8).Controls(2).Visible = False
> End If
> End Sub


grazie per la risposta...
questo è in vb? io conosco solo il c#
adesso provo ad adattarlo

4mane Profilo | Junior Member

if (e.Row.RowType == DataControlRowType.DataRow) {     if (Condizione1) {         e.Row.Cells(8).Controls(0).Visible = true;         e.Row.Cells(8).Controls(1).Visible = true;         e.Row.Cells(8).Controls(2).Visible = true;     }     else if (Condizione2) {         e.Row.Cells(8).Controls(0).Visible = false;         e.Row.Cells(8).Controls(1).Visible = true;         e.Row.Cells(8).Controls(2).Visible = false;     }     else {         e.Row.Cells(8).Controls(0).Visible = false;         e.Row.Cells(8).Controls(1).Visible = false;         e.Row.Cells(8).Controls(2).Visible = false;     } }

mrub Profilo | Junior Member

IL problema si può risolvere in modo dichiarativo molto semplicemente

<asp:LinkButton ID="GeneraPrenotazioneLinkButton" runat="server" ..... visible='<%# cbool(Eval("campoconfronto").tostring ="valore confronto") %>' OnClick="GeneraPrenotazioneLinkButton_Click"></asp:LinkButton>

da notare l'utilizzo del metodo Tostring per evitare l'errore nel caso in cui Eval("campoconfronto") sia null

nell'esempio mi riferisco ad un linkButton ma nulla cambia se usi button o imagebutton ... io preferisco i linkbuton perchè posso ottenere l'effetto di rollover con le metaclassi.
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