Ciao.

Ho dovuto modificare un portale web creato da una terza persona alcuni anni fa dove si faceva largo uso dei DataGrid e non dei piu' recenti GridView.

Devo creare dinamicamente una buttoncolumn in base ad una particolare regola ed eseguire una determinata operazione quando si clicca questo bottone.

Questo è un pezzo di codice utilizzato per la creazione dinamica del ButtonColumn:

if (userInfo.GetRole() != Utility.ROLE_COMMUNICATIONWRITER) {                  ButtonColumn bc = new ButtonColumn();                 bc.CommandName = "UpdateCommunicationState";                  bc.HeaderStyle.Width = Unit.Percentage(4);                 bc.Text = Server.HtmlDecode("<img border=0  alt='Modifica stato comunicazione' src=../../restricted/editorMessaggi/images/mix_ext.png>");                  bc.ButtonType = ButtonColumnType.LinkButton;                  bc.Visible = true;                 ComDataGrid.Columns.Add(bc);             }             ComDataGrid.DataBind();      ComDataGrid.Visible = true;  


Questo invece è il il pezzo di codice utilizzato per il click del bottone:
private void ComDataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) {if (e.CommandName == "UpdateCommunicationState") { Response.Redirect("UpdateCommunicationState.aspx?comID=" + comID, true);                  }}


Quest'ultimo pezzo non funziona, nel senso che non viene mai eseguito il metodo ComDataGrid_ItemCommand .

Come posso risolvere la cosa? Ovviamente consigli e migliorie sono ben accetti.

Ciao,
Andrea
.
Mi pare di capire che il DataBind lo fai ad ogni postback. Assicurati di aggiungere sempre ad ogni postback la colonna in modo che la collezione Columns sia giusta. Chiama DataBind invece solo la prima volta.

Ciao

Il mio blog
Homepage

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.