Fire a RowCommand event from ImageButton created dynamically inside ITemplate?

I took your code as is and tested. There is no errors on this code. Also the row command is triggered properly.

I presume the problem is with eventbinding of the dynamic gridview you created.

Up vote 2 down vote favorite share g+ share fb share tw.

I have a dynamically created GirdView based on value of a DropDownList. I use the ITemplate interface to generate the fields: public class CreateItemTemplateOrder : ITemplate { ImageButton imgbtn_up; ImageButton imgbtn_down; string s_imgbtn_up_name; string s_imgbtn_up_ImageUrl; string s_imgbtn_up_CommandName; string s_imgbtn_up_CommandArgument; public CreateItemTemplateOrder(string imgbtn_up_name, string imgbtn_up_ImageUrl, string imgbtn_up_CommandName, string imgbtn_up_CommandArgument) { this. S_imgbtn_up_name = imgbtn_up_name; this.

S_imgbtn_up_ImageUrl = imgbtn_up_ImageUrl; this. S_imgbtn_up_CommandName = imgbtn_up_CommandName; this. S_imgbtn_up_CommandArgument = imgbtn_up_CommandArgument; } public void InstantiateIn(Control objContainer) { imgbtn_up = new ImageButton(); imgbtn_up.

DataBinding += new EventHandler(imgbtn_up_DataBinding); objContainer.Controls. Add(imgbtn_up); } private void imgbtn_up_DataBinding(object sender, EventArgs e) { ImageButton imgbtn_up = (ImageButton)sender; imgbtn_up. ID = s_imgbtn_up_name; imgbtn_up.

ImageUrl = s_imgbtn_up_ImageUrl; imgbtn_up. CommandName = s_imgbtn_up_CommandName; imgbtn_up. CommandArgument = s_imgbtn_up_CommandArgument; imgbtn_up.

CausesValidation = false; } } Now I want to fire RowCommand From this dynamically generated column with command argument and command name bounded to this ImageButton the code to get this working is: Protected void inizializza_gw_tipi(){ TemplateField order_col = new TemplateField; order_col. ItemTemplate = new CreateItemTemplateOrdine("imgbtn_up", "~/imgs/Up. Gif", "minus", "order"); order_col.

HeaderText = "order"; order_col. SortExpression = "order"; gw_tipi.Columns. Add(order_col); } All this code works fine but doesn't fire RowCommand from GridView when clicked on the ImageButton EDIT: I call the procedure in SelectedIndexChanged event of a DropDownList ddl_tipi_SelectedIndexChanged(Object sender , System.

EventArgs e) { inizializza_gw_tipi(); gw_tipi.DataBind(); } Protected Sub inizializza_gw_tipi() Using cn As New SqlConnection(shared_foos. ConnectionString) Using cmd As New SqlCommand("SELECT nome_tabella, nome_campo_id, nome_campo_nome, nome_campo_descrizione, has_order FROM maschere_tipi WHERE id = @id", cn) cmd.Parameters. AddWithValue("id", IIf(Session("sel_val") Is Nothing, "", Session("sel_val"))) cn.Open() Dim rdr As SqlDataReader = cmd.

ExecuteReader rdr.Read() If rdr.HasRows Then Dim b_crea_controllo As Boolean = True 'controllo se mettere o no la colonna ordine If rdr("has_order") = True Then 'controllo che la colonna non sia già stata inserita, 'se è già stata inserita la rimuovo e la ricreo For I As Integer = 0 To gw_tipi.Columns. Count - 1 If gw_tipi. Columns(i).

HeaderText = "ordine" Then 'gw_tipi.Columns. Remove(gw_tipi. Columns(i)) b_crea_controllo = False End If Next If b_crea_controllo = True Then Dim ordine_col As New TemplateField() ordine_col.

ItemTemplate = New CreateItemTemplateOrdine("lbl_ordine", "ordine", "imgbtn_up", "~/imgs/Up. Gif", "meno", "ordine", "imgbtn_down", "~/imgs/Down. Gif", "piu", "ordine", AddressOf ImageCommand) ordine_col.

HeaderText = "ordine" ordine_col. SortExpression = rdr("nome_campo_nome") gw_tipi.Columns. Add(ordine_col) End If End If b_crea_controllo = True For I As Integer = 0 To gw_tipi.Columns.

Count - 1 If gw_tipi. Columns(i). HeaderText = rdr("nome_campo_nome") Then b_crea_controllo = False End If Next If b_crea_controllo = True Then Dim nome_col As New TemplateField() nome_col.

ItemTemplate = New CreateItemTemplateLabel("lbl_nome", rdr("nome_campo_nome")) nome_col. HeaderText = rdr("nome_campo_nome") nome_col. SortExpression = rdr("nome_campo_nome") gw_tipi.Columns.

Add(nome_col) End If b_crea_controllo = True For I As Integer = 0 To gw_tipi.Columns. Count - 1 If gw_tipi. Columns(i).

HeaderText = rdr("nome_campo_descrizione") Then b_crea_controllo = False End If Next If b_crea_controllo = True Then Dim descrizione_col As New TemplateField() descrizione_col. ItemTemplate = New CreateItemTemplateLabel("lbl_descrizione", rdr("nome_campo_descrizione")) descrizione_col. HeaderText = rdr("nome_campo_descrizione") descrizione_col.

SortExpression = rdr("nome_campo_descrizione") gw_tipi.Columns. Add(descrizione_col) End If Dim str_order_by As String = " ORDER BY " Dim str_ordine As String = "" If rdr("has_order") = True Then str_ordine = ", ordine " str_order_by &= "ordine" Else str_order_by &= rdr("nome_campo_nome") End If Dim sqlds_tipi As New SqlDataSource(shared_foos. ConnectionString, "SELECT " & rdr("nome_campo_id") & ", " & rdr("nome_campo_nome") & ", " & rdr("nome_campo_descrizione") & str_ordine & " FROM " & rdr("nome_tabella") & str_order_by) gw_tipi.

DataSource = sqlds_tipi End If End Using End Using End Sub c# asp.net .net gridview rowcommand link|improve this question edited Mar 15 at 10:26 asked Mar 15 at 9:11Simone Foschi154.

I took your code as is and tested. There is no errors on this code. Also the row command is triggered properly.

I presume the problem is with eventbinding of the dynamic gridview you created. For the row command to be triggered the gridview has to be created on every postback. And the event should be bound.

The Code you provided is not exactly what I needed. It doesn't have the initialization of the grid view. The following should give you some insight.

GridView GV = new GridView(); //Make sure to create the grid view on every postback and populate it. Alternatively (i don't know if its a good practice. ) you can store a reference of gridview in session.

GV. RowCommand += new GridViewCommandEventHandler(GV_RowCommand); //bind the row command event. This should solve the problem.

The server doesn't keep track of dynamically created controls. So when the post back occurs the gridview control does not exist. And thus no event can be triggered.

Because in your selected index change event there is not initialization of grid view. In which case may be the only thing you are missing is OnRowCommand="rowcommandfunction" on the aspx page. – Gnani Mar 15 at 11:10 Resolved, I put the inizialization code in the page_load event and it fires the rowcommand as expected – Simone Foschi Mar 18 at 13:08.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions