Cambio proprietà TEXT DataGrid

martedì 07 agosto 2007 - 15.36

delama77 Profilo | Junior Member

Come posso modificare la proprietà text di una colonna di tipo ButtonColumn da codice ?

micto27 Profilo | Senior Member

>Come posso modificare la proprietà text di una colonna di tipo
>ButtonColumn da codice ?

Ad esempio

sull'evento "DataGrid1_ItemCreated" ipotizzando che la ButtonColumn sia la colonna con indice 5

Dim b As Button
b = e.Item.Cells(5).Controls(0)
b.Text = "AAAAAA"

ciao, Michele

delama77 Profilo | Junior Member

ti ringrazio per la risposta
Sono un utente veramente alle prime armi come riesco ad avere indice corretto del mio controllo

.Controls(????)

Grazie ancora

Alessandra

micto27 Profilo | Senior Member

>ti ringrazio per la risposta
>Sono un utente veramente alle prime armi come riesco ad avere
>indice corretto del mio controllo
>
>.Controls(????)
>
>Grazie ancora
>
>Alessandra

Nel caso di una ButtonColumn il pulsante è ospitato in una cella e più precisamente nella collezione Controls
della cella. Essendo l'unico controllo contenuto lo puoi puntare direttamente utilizzando l'indice 0.

Per individuare (e recuperarne il riferimento) un controllo del quale si conosce il nome (ad esempio per i
controlli collocati in una TemplateColumn) può essere comodo il metodo FindControl:
es. dim b as Button = e.Item.FindControl("Button1").

In ogni caso puoi sempre curiosare il contenuto di una collezione Controls
eseguendo ad esempio un ciclo

For Each c As Control in xxxx.Controls
.......
Next

Ciao, Michele

delama77 Profilo | Junior Member

Quando uso il metodo find control cosa devo mettere tra parentesi
Il nome del mio ButtonControl oppure l'ID....

Non riesco ancora a cambiare la scritta sul DATAGRID .... Sulla colonna associata un linkbutton

micto27 Profilo | Senior Member

>Quando uso il metodo find control cosa devo mettere tra parentesi
>Il nome del mio ButtonControl oppure l'ID....
>
>Non riesco ancora a cambiare la scritta sul DATAGRID .... Sulla
>colonna associata un linkbutton
>

...FindControl(ID del controllo)

nel tuo caso, se stai trattando una ButtonColumn, visto che al volo non hai l'ID del bottone che viene
inserito, ti conviene usare

dim btn as Button = e.Item.Cells(n).Control(0)

dove (n) indica l'indice della colonna nel datagrid.

btn.Text = "quello che vuoi"

Ciao, Michele

delama77 Profilo | Junior Member

scusa ancora una domanda ma sto impazzendo
su quale evento devo usare il codice ????


In pratica ho un datagrid che riporta un elenco di file che ho salvati su una directory del mio WebServer in cui riporto dimensioni del file nome del file ed accanto un link per scaricare ..
E' proprio su questo Button Control che ho la scritta scarica che devo tradurre in inglese e francese usando una classe lingua da me creata ma non so come fare

Grazie Ancora

Alessandra

micto27 Profilo | Senior Member

>scusa ancora una domanda ma sto impazzendo
>su quale evento devo usare il codice ????
>
>
>In pratica ho un datagrid che riporta un elenco di file che ho
>salvati su una directory del mio WebServer in cui riporto dimensioni
>del file nome del file ed accanto un link per scaricare ..
>E' proprio su questo Button Control che ho la scritta scarica
>che devo tradurre in inglese e francese usando una classe lingua
>da me creata ma non so come fare
>
>Grazie Ancora
>
>Alessandra


Io agirei sull'evento ItemCreated.

Ciao

delama77 Profilo | Junior Member

non funziona non mi aggiorna la proprietà text del button

micto27 Profilo | Senior Member

>non funziona non mi aggiorna la proprietà text del button

se vuoi mandami il codice che gli do un'occhiata.

Ciao

delama77 Profilo | Junior Member

Premessa io avevo messo la funzione sul funzione ItemDataBound ....
Private Sub DgListaFileAziende_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DgListaFileAziende.ItemDataBound
Dim ale As String

CaricoLingua = New cls_traduzione()
CaricoLingua = Session.Contents("Linguainserita")

Con questa istruzione commentata caricava il messaggio nella lingua corretta ma vado a perdere il buttoncontrol non ho più il link button....
'e.Item.Cells(5).Text = CaricoLingua.GetParameter(465)

Dim b As Button = e.Item.Cells(5).Controls(0)



b.Text = CaricoLingua.GetParameter(465)
End Sub

Grazie mille

Alessandra

micto27 Profilo | Senior Member


> Dim b As Button = e.Item.Cells(5).Controls(0)

se a questo punto metti un break "b" contiene il riferimento al bottone?

altra domanda: non funziona solo l'impostazione della proprietà Text del bottone oppure ottieni qualche eccezione?
Te lo chiedo per il fatto che tu provi a modificare la proprietà Text del bottone per ogni Item,
mentre probabilmente non devi farlo per Item di tipo Head, Footer, Pager (vedi e.Item.ItemType).
Ciao

delama77 Profilo | Junior Member


Ottengo B = Nothing

altra domanda: non funziona solo l'impostazione della proprietà Text del bottone oppure ottieni qualche eccezione?

non funziona solo text

micto27 Profilo | Senior Member

>
>Ottengo B = Nothing
>
>altra domanda: non funziona solo l'impostazione della proprietà
>Text del bottone oppure ottieni qualche eccezione?
>
>non funziona solo text
>
>

passo dopo passo ci arriviamo.

Dici di ottenere B = Nothing.. sempre o solo per il primo Item?
(verifica il valore di e.Item.ItemType)

per un'ulteriore verifica puoi passarmi in un file zip allegato il codice htlm della pagina aspx contenente il datagrid?

ciao

delama77 Profilo | Junior Member

>passo dopo passo ci arriviamo.
ti ringrazio tanto perchè è tutto il giorno che sbatto la testa su questa cosa ....

Dici di ottenere B = Nothing.. sempre o solo per il primo Item?
(verifica il valore di e.Item.ItemType)
valore di e.item.itemtype nel primo caso = 0 ci0è Header
poi ci passa una seconda volta ed ottengo il mio primo effettivo Item = 2
infine il footer ...

>per un'ulteriore verifica puoi passarmi in un file zip allegato il codice htlm della pagina aspx contenente il datagrid?
non ho un solo datagrid ma diversi tutti simili
quello in oggetto nella nostra discussione è il seguente DgListaFileAziende


Dimenticavo uso visual studio .net 2002

In allegato la pagina con il testo HTML della pagina

Ti ringrazio davvero molto
Credo che dopo questa esperienza mi seva davvero un corso intensivo

ciao

micto27 Profilo | Senior Member

>Dici di ottenere B = Nothing.. sempre o solo per il primo Item?
>(verifica il valore di e.Item.ItemType)
>valore di e.item.itemtype nel primo caso = 0 ci0è Header
>poi ci passa una seconda volta ed ottengo il mio primo effettivo
>Item = 2

anche sull'Item "effettivo" ottieni b = nothing?

>infine il footer ...
>
>>per un'ulteriore verifica puoi passarmi in un file zip allegato il codice htlm della pagina aspx contenente il datagrid?
>non ho un solo datagrid ma diversi tutti simili
>quello in oggetto nella nostra discussione è il seguente DgListaFileAziende

probabilmente l'allegato è stato rifiutato, prova ad allegare un file zip

ciao

delama77 Profilo | Junior Member

ottengo nothing sul primo ed esce dalla routine

micto27 Profilo | Senior Member

>ottengo nothing sul primo ed esce dalla routine
>
>

Ok, prova così:

Private Sub DgListaFileAziende_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DgListaFileAziende.ItemDataBound
Dim ale As String

CaricoLingua = New cls_traduzione()
CaricoLingua = Session.Contents("Linguainserita")

Dim b As Button
Select Case e.Item.ItemType
Case ListItemType.AlternatingItem, ListItemType.Item
b = e.Item.Cells(5).Controls(0)
If Not b Is Nothing Then
b.Text = CaricoLingua.GetParameter(465)
End If
Case Else
End Select

End Sub

Ciao, Michele

delama77 Profilo | Junior Member

Allora ho provato la routine riconosce item ma ritorna nothing subito al primo item ed esce

micto27 Profilo | Senior Member

Credo di aver capito.

Il codice che ti ho inviato si riferisce ad una ButtonColumn che prevede il layout di tipo
PushButton, ma tu usi un layout di tipo LinkButton.
Quindi anzichè Dim b As Button prova l'ultimo codice che ti ho inviato definendo però

Dim b as LinkButton

Ciao, Michele

delama77 Profilo | Junior Member

Una domanda ancora perchè nel file HTML la colonna Link Button viene indicata come ButtonColumn ?

ti ringrazio davvvero

alla prossima .....

Spero di riuscire ad aiutarti anche io

Ciao

Alessandra

micto27 Profilo | Senior Member

>Una domanda ancora perchè nel file HTML la colonna Link Button
>viene indicata come ButtonColumn ?
>
>ti ringrazio davvvero
>
>alla prossima .....
>
>Spero di riuscire ad aiutarti anche io
>
>Ciao
>
>Alessandra

Che si tratti di Button o LinkButton il controllo previsto dalla colonna di tipo ButtonColumn,
al di là dell'aspetto, è comunque assimilabile ad un pulsante.
Entrambi i controlli, fra l'altro, contengono nel nome il termine Button.

Inizialmente davo per scontato che tu utilizzassi lo stile PushButton e quindi ci abbiamo messo
un po' più del previsto a sbrogliare la faccenda, poi vedendo il codice HTML del datagrid
ho capito che si trattava di quello.

Ora funziona come ti aspettavi?

Ciao, Michele.

delama77 Profilo | Junior Member

ora funziona
Devo fare ancora qualche test

Grazie per l'aiuto

Ciao
Alessandra
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5