CommandField in una GridView: Modificare ShowEditButton da codice vb.n...

venerdì 22 maggio 2015 - 13.13
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows XP  |  Visual Studio 2010  |  SQL Server 2008 R2  |  VBScript

paolagumi Profilo | Junior Member

Buongiorno,
ho una gridview con impostato un CommandField per editare ogni riga.
Non voglio però che tutte le righe siano editabili, e su quelle non editabili voglio che scompaia l'immagine su cui si clicca per editarla.
Da codice vb, scorro la gridview e imposto la proprietà Enabled della la cella a False, questo funziona: il bottone non è più cliccabile. Ma non riesco a far sparire l'EditImageUrl!
Avrei pensato di impostare, nel codice vb quando scorro la gridview, la proprietà ShowEditButton del commandfield a False oppure un percorso a un'immagine vuota sulla proprietà EditImageUrl.
Non ci riesco! Pefchè la gridview "sente" le celle e non il fatto (mi sembra) che siano dei commandfield, quindi impostarne proprietà specifiche. Ho provato anche con GvMia.Rows(idx).Cells(c),Attributes("ShowEditButton=.....oppure EditImageurl=...) ma non funzionano.
Come posso fare?
Questo è il mio commandfield:

<asp:GridView ID="GvMia" allowpaging="true" autogeneratecolumns="false" runat="server" OnRowEditing="GvMia_RowEditing" OnRowCancelingEdit="GvMiai_RowCancelingEdit" OnRowUpdating="GvMiaPersonali_RowUpdating" >
<HeaderStyle CssClass="DataGridHeaderBlu" />
<RowStyle CssClass="DataGridItem" />
<PagerStyle CssClass="DataGridPager" />
<Pagersettings pagebuttoncount="50" />
<Columns>

<asp:CommandField ShowEditButton="True" ButtonType="Image" EditImageUrl="~/immagini/Modifica.gif" updateimageurl="~/immagini/Salvataggio.gif" UpdateText="Salva Modifiche" cancelimageurl="~/immagini/Annullamento.gif" CancelText="Annulla modifiche" HeaderText="Modifica Visibilità" ItemStyle-Width="200" ItemStyle-HorizontalAlign="Center" />

Poi da codice scorro la gridview così:
For idx As Int32 = 0 To GvMia.Rows.Count - 1
If GvMia.Rows(idx).Cells(3).Text = "D" Then
GvMia.Rows(idx).Cells(0).Enabled = False ---> Funziona, è disabilitato
GvMia.Rows(idx).Cells(0).Attributes("ShowEditButton") = "False" --> non funziona!!!
End If
Next

ho provato anche questo:
MiaGridViewRow.Attributes.Add("ShowEditButton", "this.src='False'")
MiaGridViewRow.Attributes.Add("EditImageUrl", "this.src='~/immagini/Vuoto.gif'")

Non voglio usare:
GvMia.Rows(idx).Cells(0).Visible = False
perchè questo sulla riga interessata mi sposta a sinistra le colonne successive...bruttissimo!
Grazie,
Paola

andrestu Profilo | Expert

invece di usare <asp:CommandField usa una colonna personalizzata e infilaci dentro dei button (o altro tipo di controlli) che funzioneranno da controlli-comandi personalizzati...

Andrea Restucci - Web Developer

paolagumi Profilo | Junior Member

eh infatti avevo visto che c'era questa soluzione..con gli itemtemplate.

Alla fine...ci sono riuscita così. Nello scorrere la mia gridview per impostare il bottone a Enabled=False che funziona, ho aggiunto questo:
Dim lb As ImageButton = GvMia.Rows(idx).Cells(0).Controls(0)
lb.ImageUrl = "~/immagini/Vuoto.gif"

Il tutto diventa diventa così:

For idx As Int32 = 0 To GvMia.Rows.Count - 1
If GvMia.Rows(idx).Cells(3).Text = "D" Then

GvMia.Rows(idx).Cells(0).Enabled = False
Dim lb As ImageButton = GvMia.Rows(idx).Cells(0).Controls(0)
lb.ImageUrl = "~/immagini/Vuoto.gif"

End If

Next

Se può essere utile a qualcuno!
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