This is a migrated thread and some comments may be shown as answers.

Dynamically created RadGrid ItemCommand not firing

6 Answers 181 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Geraldo Scarparo
Top achievements
Rank 1
Geraldo Scarparo asked on 25 Oct 2010, 12:51 PM
Hi all,

I´ve created a web user control (.ascx) which is dynamically added to the page. It contains a RadAjaxPanel which contains a RadGrid, as follows:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ComentarioLista.ascx.cs"
    Inherits="Include_RedeSocial20_MuralItem_ComentarioLista" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<%@ Register Src="../../Investidor/Foto.ascx" TagName="Foto" TagPrefix="uc1" %>
<%@ Register Src="ComentarioItem.ascx" TagName="ComentarioItem" TagPrefix="uc2" %>
<%@ Register Src="../../Mensagem.ascx" TagName="Mensagem" TagPrefix="uc3" %>
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" HorizontalAlign="NotSet">
    <table style="width: 100%;">
        <tr>
            <td>
                <asp:LinkButton ID="btnComentar" runat="server" OnClick="btnComentar_Click">Comentar</asp:LinkButton>
            </td>
        </tr>
        <tr runat="server" id="trNovoComentario" visible="false">
            <td>
                <asp:TextBox ID="tbComentario" runat="server" MaxLength="2000" TextMode="MultiLine"
                    Width="100%"></asp:TextBox>
                <br />
                <asp:Button ID="btnPostar" runat="server" Text="Postar comentário" CssClass="btnLaranja"
                    OnClick="btnPostar_Click" />
            </td>
        </tr>
        <tr>
            <td>
                <telerik:RadGrid ID="RadGridLista" runat="server" AutoGenerateColumns="False" border="1"
                    GridLines="None" OnItemCreated="RadGridLista_ItemCreated" PageSize="10" SkinID="RadGridForum"
                    OnItemCommand="RadGridLista_ItemCommand">
                    <ClientSettings EnableAlternatingItems="true" EnableRowHoverStyle="false">
                    </ClientSettings>
                    <PagerStyle SEOPagingQueryStringKey="page" />
                    <MasterTableView AllowPaging="true" CellSpacing="-1" NoMasterRecordsText="Nenhum comentário"
                        ShowHeader="False">
                        <RowIndicatorColumn>
                            <HeaderStyle Width="20px" />
                        </RowIndicatorColumn>
                        <ExpandCollapseColumn>
                            <HeaderStyle Width="20px" />
                        </ExpandCollapseColumn>
                        <Columns>
                            <telerik:GridTemplateColumn UniqueName="CODIGO">
                                <ItemTemplate>
                                    <uc2:ComentarioItem ID="ComentarioItem1" runat="server" Codigo='<%#Eval("CODIGO") %>'
                                        DthrInclusao='<%#Eval("DTHR_INCLUSAO") %>' FotoUrl='<%#Eval("FOTO_URL") %>' PublicacaoCodigo='<%#Eval("SLN_PUBL_CODIGO") %>'
                                        Texto='<%#Eval("TEXTO") %>' UsuarioCodigo='<%#Eval("SLN_USUA_CODIGO") %>' UsuarioCodigoPublicacao='<%#Eval("SLN_USUA_CODIGO_AUTOR") %>'
                                        UsuarioNome='<%#Eval("SLN_USUA_NOME") %>' />
                                </ItemTemplate>
                            </telerik:GridTemplateColumn>
                            <telerik:GridTemplateColumn UniqueName="EXCLUIR" HeaderStyle-Width="18px">
                                <ItemTemplate>
                                    <div align="center">
                                        <asp:ImageButton ID="btnExcluir" runat="server" ImageUrl="~/Images/Botao/excluir2.gif"
                                            CommandArgument='<%#Eval("CODIGO") %>' CommandName="Excluir" Visible='<%#GetVisible(Eval("SLN_USUA_CODIGO").ToString(),Eval("SLN_USUA_CODIGO_AUTOR").ToString()) %>' />
                                    </div>
                                </ItemTemplate>
                                <HeaderStyle Width="18px" />
                            </telerik:GridTemplateColumn>
                        </Columns>
                        <PagerStyle Position="Bottom" />
                    </MasterTableView>
                </telerik:RadGrid>
            </td>
        </tr>
    </table>
</telerik:RadAjaxPanel>
<uc3:Mensagem ID="Mensagem1" runat="server" />
<input type="hidden" runat="server" id="tbPublicacaoCodigo" />

And the .CS for this file is as follows:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Data.SqlClient;
  
public partial class Include_RedeSocial20_MuralItem_ComentarioLista : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
  
    }
  
    public Nullable<decimal> PublicacaoCodigo
    {
        get
        {
            decimal cod;
            bool isCodValido = decimal.TryParse(tbPublicacaoCodigo.Value, out cod);
            if (!isCodValido)
                return null;
            else
                return cod;
        }
        set { tbPublicacaoCodigo.Value = value.ToString(); }
    }
  
    public void BuscaDados()
    {
        UsuarioDataSetTableAdapters.SLN_VW_PUBLICACAO_COMENTARIOTableAdapter ta =
            new UsuarioDataSetTableAdapters.SLN_VW_PUBLICACAO_COMENTARIOTableAdapter();
        UsuarioDataSet.SLN_VW_PUBLICACAO_COMENTARIODataTable dt = new UsuarioDataSet.SLN_VW_PUBLICACAO_COMENTARIODataTable();
  
        dt = ta.GetDataByPublicacao((decimal)PublicacaoCodigo);
        if (dt.Count == 0)
        {
            RadGridLista.Visible = false;
        }
        else
        {
            RadGridLista.Visible = true;
  
            RadGridLista.DataSource = dt;
            RadGridLista.DataBind();
        }
    }
  
    protected bool GetVisible(string usuarioCodigo, string usuarioCodigoPublicacao)
    {
        if ((usuarioCodigoPublicacao.Equals(Sln.Usuario.Usuario.CodigoSessao)) || (usuarioCodigo.Equals(Sln.Usuario.Usuario.CodigoSessao)))
            return true;
        else
            return false;
  
    }
  
    protected void RadGridLista_ItemCreated(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridPagerItem)
        {
            Util.EscondeGridPageSize((GridPagerItem)e.Item);
        }
    }
  
    protected void btnPostar_Click(object sender, EventArgs e)
    {
        SqlTransaction tran = null;
        try
        {
            if (string.IsNullOrEmpty(tbComentario.Text))
            {
                //Page.ClientScript.RegisterStartupScript(Page.GetType(), "aviso", "alert('Comentário não pode ser vazio.');");
                RadAjaxPanel1.ResponseScripts.Add("alert('Comentário não pode ser vazio.');");
                return;
            }
  
            // Pega o código da publicação
            decimal pub = PublicacaoCodigo.Value;
  
            UsuarioDataSetTableAdapters.SLN_PUBLICACAO_COMENTARIOTableAdapter ta = new UsuarioDataSetTableAdapters.SLN_PUBLICACAO_COMENTARIOTableAdapter();
            tran = TableAdapterHelper.BeginTransaction(ta);
  
            decimal cod = (decimal)ta.ProximoCodigo();
  
            ta.Insert(cod, pub, Sln.Usuario.Usuario.CodigoSessao, tbComentario.Text, DateTime.Now);
  
            tran.Commit();
            //Response.Redirect(Request.Url.ToString(), false);
  
            tbComentario.Text = "";
            trNovoComentario.Visible = false;
            BuscaDados();
        }
        catch (Exception ex)
        {
            if (tran != null)
                tran.Rollback();
  
            if (ex.Message.ToLower().IndexOf("a potentially dangerous") >= 0)
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "aviso", "alert('Dangerous text');");
            else
            {
                Log.Insere(string.Format("RedeSocial20.ComentarioLista.Inserir - Usuario: {0} Publicacao: {1} Mensagem: {2} Erro: {3} Trace: {4}",
                    Sln.Usuario.Usuario.CodigoSessao, PublicacaoCodigo, tbComentario.Text, ex.Message, ex.StackTrace), Log.ERROR);
                Mensagem1.Exibe("Desculpe-nos, houve um erro que será analisado por nossa equipe.", false);
            }
        }
        finally
        {
            if (tran != null)
                tran.Dispose();
        }
    }
  
    protected void btnComentar_Click(object sender, EventArgs e)
    {
        if (!trNovoComentario.Visible)
            trNovoComentario.Visible = true;
        else
            trNovoComentario.Visible = false;
    }
  
    protected void RadGridLista_ItemCommand(object source, GridCommandEventArgs e)
    {
        string strCod = e.CommandArgument.ToString();
  
        decimal codigo = decimal.Parse(strCod);
  
        if (e.CommandName.Equals("Excluir"))
        {
            // Efetua exclusão do item e então atualiza lista de comentários
            UsuarioDataSetTableAdapters.SLN_PUBLICACAO_COMENTARIOTableAdapter taCom = new UsuarioDataSetTableAdapters.SLN_PUBLICACAO_COMENTARIOTableAdapter();
            taCom.Delete(codigo);
  
            //RadGridLista.Rebind();
            BuscaDados();
        }
    }
}



Well, the ItemCommand event is not firing, even when "btnExcluir" (the ImageButton) is clicked. What am I doing wrong?

Thanks in advance!

6 Answers, 1 is accepted

Sort by
0
Geraldo Scarparo
Top achievements
Rank 1
answered on 25 Oct 2010, 05:48 PM

Here is the control from which the previous control is called.

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MensagemItem.ascx.cs"
    Inherits="Include_RedeSocial20_MuralItem_MensagemItem" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<%@ Register Src="../../Investidor/Foto.ascx" TagName="Foto" TagPrefix="uc1" %>
<%@ Register Src="ComentarioLista.ascx" TagName="ComentarioLista" TagPrefix="uc2" %>
<%@ Register Src="CurtirItem.ascx" TagName="CurtirItem" TagPrefix="uc3" %>
<telerik:RadCodeBlock runat="server" ID="RadCodeBlockItem">
    <script type="text/javascript">
    function ocultaDiv_<%= PublicacaoCodigo.ToString() %>() {
        //divItem.style.display = "none";
        document.getElementById("<%=divItem.ClientID %>").style.display = "none";
    }
    </script>
</telerik:RadCodeBlock>
<telerik:RadAjaxPanel ID="RadAjaxPanelItem" runat="server" 
    HorizontalAlign="NotSet">
    <div runat="server" id="divItem">
        <table style="width: 100%;">
            <tr>
                <td rowspan="4" style="text-align: center" valign="top" width="70px">
                    <uc1:Foto ID="Foto1" runat="server" />
                </td>
                <td valign="middle" style="text-align: center" width="18px">
                    <asp:Image ID="Image1" runat="server" ImageUrl="~/Images/atividade/perfil_editar.gif" />
                </td>
                <td valign="middle">
                    <asp:HyperLink ID="hlAutor" runat="server">[hlAutor]</asp:HyperLink>
                     <asp:Label ID="lbEscreveuVia" runat="server"></asp:Label>
 <asp:HyperLink ID="hlOrigem" runat="server">[hlOrigem]</asp:HyperLink>
                </td>
                <td valign="middle" width="15px">
                    <asp:ImageButton ID="btnExcluir" runat="server" ImageUrl="~/Images/Botao/delete.gif"
                        OnClick="btnExcluir_Click" CssClass="CursorHand" ToolTip="Excluir" />
                </td>
                <td style="text-align: right" valign="middle" width="51px">
                    <asp:Label ID="lbDthrInclusao" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td colspan="4" valign="top">
                    <asp:Label ID="lbTexto" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td colspan="4" valign="top">
                    <uc2:ComentarioLista ID="ComentarioLista1" runat="server" />
                </td>
            </tr>
            <tr>
                <td colspan="4" valign="top">
                    <uc3:CurtirItem ID="CurtirItem1" runat="server" />
                </td>
            </tr>
        </table>
    </div>
    <input type="hidden" runat="server" id="tbUsuarioCodigo" />
    <input type="hidden" runat="server" id="tbUsuarioNome" />
    <input type="hidden" runat="server" id="tbDthrInclusao" />
    <input type="hidden" runat="server" id="tbMensagem" />
    <input type="hidden" runat="server" id="tbPublicacaoCodigo" />
    <input type="hidden" runat="server" id="tbNroCurtidores" />
    <input type="hidden" runat="server" id="tbPublicacaoOrigem" />
    <input type="hidden" runat="server" id="tbUsuarioCodigoOrigem" />
    <input type="hidden" runat="server" id="tbUsuarioNomeOrigem" />
</telerik:RadAjaxPanel>

Code-behind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
  
public partial class Include_RedeSocial20_MuralItem_MensagemItem : System.Web.UI.UserControl
{
    public string UsuarioCodigo
    {
        get { return tbUsuarioCodigo.Value; }
        set
        {
            tbUsuarioCodigo.Value = value;
            GetVisible();
        }
    }
  
    public string UsuarioNome
    {
        get { return tbUsuarioNome.Value; }
        set { tbUsuarioNome.Value = value; }
    }
  
    public DateTime DthrInclusao
    {
        get { return DateTime.Parse(tbDthrInclusao.Value); }
        set { tbDthrInclusao.Value = value.ToString("dd/MM/yyyy HH:mm:ss"); }
    }
  
    public string Mensagem
    {
        get { return tbMensagem.Value; }
        set { tbMensagem.Value = value; }
    }
  
    public Nullable<decimal> PublicacaoCodigo
    {
        get
        {
            decimal pub;
            bool isPubValido = decimal.TryParse(tbPublicacaoCodigo.Value, out pub);
  
            if (!isPubValido)
                return null;
            else
                return pub;
        }
        set { tbPublicacaoCodigo.Value = value.ToString(); }
    }
  
    public Nullable<decimal> PublicacaoOrigemCodigo
    {
        get
        {
            decimal orig;
            bool isOrigValido = decimal.TryParse(tbPublicacaoOrigem.Value, out orig);
  
            if (!isOrigValido)
                return null;
            else
                return orig;
        }
        set { tbPublicacaoOrigem.Value = value.ToString(); }
    }
  
    public string UsuarioCodigoOrigem
    {
        get { return tbUsuarioCodigoOrigem.Value; }
        set { tbUsuarioCodigoOrigem.Value = value; }
    }
  
    public string UsuarioNomeOrigem
    {
        get { return tbUsuarioNomeOrigem.Value; }
        set { tbUsuarioNomeOrigem.Value = value; }
    }
  
    public Nullable<decimal> NroCurtidores
    {
        get { return decimal.Parse(tbNroCurtidores.Value); }
        set { tbNroCurtidores.Value = value.ToString(); }
    }
  
    protected void Page_Load(object sender, EventArgs e)
    {
  
    }
  
    public void BuscaDados()
    {
        Foto1.UsuarioCodigo = UsuarioCodigo;
        Foto1.BuscaDados();
  
        hlAutor.NavigateUrl = UrlUtil.MontaUrl(Request, "id=" + UsuarioCodigo, "investidor");
        hlAutor.Text = UsuarioNome;
  
        if (!string.IsNullOrEmpty(UsuarioCodigoOrigem))
        {
            lbEscreveuVia.Text = "via";
            hlOrigem.NavigateUrl = UrlUtil.MontaUrl(Request, "id=" + UsuarioCodigoOrigem, "investidor");
            hlOrigem.Text = UsuarioNomeOrigem;
        }
        else
        {
            lbEscreveuVia.Text = "escreveu:";
            hlOrigem.Visible = false;
        }
  
        lbDthrInclusao.Text = Util.DescricaoDuracao(DthrInclusao);
        lbTexto.Text = Util.AjustaTextoExibirHtml(Mensagem);
  
        ComentarioLista1.PublicacaoCodigo = PublicacaoCodigo;
        ComentarioLista1.BuscaDados();
  
        CurtirItem1.PublicacaoCodigo = PublicacaoCodigo;
        CurtirItem1.NroCurtidores = NroCurtidores;
        CurtirItem1.BuscaDados();
  
        divItem.Attributes["style"] = "padding: 20px;";
        divItem.Attributes["class"] = "caixaInvestidor";
  
    }
  
    protected void btnExcluir_Click(object sender, ImageClickEventArgs e)
    {
        // Apaga comentários correspondentes ao item
        UsuarioDataSetTableAdapters.SLN_PUBLICACAO_COMENTARIOTableAdapter taCom = new UsuarioDataSetTableAdapters.SLN_PUBLICACAO_COMENTARIOTableAdapter();
        taCom.DeleteByPublicacaoCodigo(PublicacaoCodigo.Value);
  
        // Apaga "curtições" correspondentes ao item
        UsuarioDataSetTableAdapters.SLN_PUBLICACAO_CURTIRTableAdapter taCur = new UsuarioDataSetTableAdapters.SLN_PUBLICACAO_CURTIRTableAdapter();
        taCur.DeleteByPublicacao(PublicacaoCodigo.Value);
  
        // Apaga publicação
        UsuarioDataSetTableAdapters.SLN_PUBLICACAOTableAdapter taPub = new UsuarioDataSetTableAdapters.SLN_PUBLICACAOTableAdapter();
        taPub.Delete(PublicacaoCodigo.Value);
  
        RadAjaxPanelItem.ResponseScripts.Add(string.Format("ocultaDiv_{0}();", PublicacaoCodigo.ToString()));
    }
  
    protected void GetVisible()
    {
        if ((UsuarioCodigo.Equals(Sln.Usuario.Usuario.CodigoSessao))||(Sln.Usuario.Usuario.CodigoInformado.Equals(Sln.Usuario.Usuario.CodigoSessao)))
            btnExcluir.Visible = true;
        else
            btnExcluir.Visible = false;
    }
}
0
Geraldo Scarparo
Top achievements
Rank 1
answered on 25 Oct 2010, 05:59 PM
I forgot to mention, the last control is which is created dynamically at the main page.
0
Geraldo Scarparo
Top achievements
Rank 1
answered on 27 Oct 2010, 12:04 PM
This is the method which adds the mentioned control to a table on the main page.

protected HtmlTableCell DadoMuralUsuario(UsuarioDataSet.SLN_VW_MURALRow row)
{
    HtmlTableCell tdDadoMural = new HtmlTableCell();
    HtmlGenericControl divPanel = new HtmlGenericControl("div");
    tdDadoMural.Controls.Add(divPanel);
    // Cria uma tabela com os dados da atividade: foto do usuário, link para o perfil do usuário, data e mensagem
    if (!row.IsCODIGONull())    // mensagem
    {
        if ((!row.IsSLN_LINK_URLNull() && (row.SLN_LINK_URL.Contains("youtube.com"))))   // é um vídeo do YouTube
        {
            ASP.include_redesocial_muralitem_videoitem_ascx videoitem =
                (ASP.include_redesocial_muralitem_videoitem_ascx)Page.LoadControl("~/Include/RedeSocial/MuralItem/VideoItem.ascx");
            videoitem.PublicacaoCodigo = row.CODIGO;
            videoitem.Url = row.SLN_LINK_URL;
            videoitem.Titulo = row.SLN_LINK_TITULO;
            videoitem.Descricao = row.SLN_LINK_DESCRICAO;
            videoitem.UsuarioCodigo = row.SLN_USUA_CODIGO_AUTOR;
            videoitem.UsuarioNome = row.SLN_USUA_NOME_AUTOR;
            videoitem.DthrInclusao = row.DTHR_INCLUSAO;
            videoitem.Mensagem = row.TEXTO;
            videoitem.NroCurtidores = row.NRO_CURTIDORES;
            if (!row.IsSLN_PUBL_CODIGONull())
            {
                videoitem.PublicacaoOrigemCodigo = row.SLN_PUBL_CODIGO;
            }
            if (!row.IsSLN_USUA_CODIGO_ORIGEMNull())
            {
                videoitem.UsuarioCodigoOrigem = row.SLN_USUA_CODIGO_ORIGEM;
                videoitem.UsuarioNomeOrigem = row.SLN_USUA_NOME_ORIGEM;
            }
            videoitem.BuscaDados();
            divPanel.Controls.Add(videoitem);
        }
        else if (!row.IsSLN_LINK_URLNull())  // é um link qualquer
        {
            ASP.include_redesocial_muralitem_linkitem_ascx linkitem =
                (ASP.include_redesocial_muralitem_linkitem_ascx)Page.LoadControl("~/Include/RedeSocial/MuralItem/LinkItem.ascx");
            linkitem.PublicacaoCodigo = row.CODIGO;
            linkitem.Url = row.SLN_LINK_URL;
            linkitem.Titulo = row.SLN_LINK_TITULO;
            linkitem.Descricao = row.SLN_LINK_DESCRICAO;
            linkitem.UsuarioCodigo = row.SLN_USUA_CODIGO_AUTOR;
            linkitem.UsuarioNome = row.SLN_USUA_NOME_AUTOR;
            linkitem.DthrInclusao = row.DTHR_INCLUSAO;
            linkitem.Mensagem = row.TEXTO;
            linkitem.NroCurtidores = row.NRO_CURTIDORES;
            if (!row.IsSLN_PUBL_CODIGONull())
            {
                linkitem.PublicacaoOrigemCodigo = row.SLN_PUBL_CODIGO;
            }
            if (!row.IsSLN_USUA_CODIGO_ORIGEMNull())
            {
                linkitem.UsuarioCodigoOrigem = row.SLN_USUA_CODIGO_ORIGEM;
                linkitem.UsuarioNomeOrigem = row.SLN_USUA_NOME_ORIGEM;
            }
              
            linkitem.BuscaDados();
            divPanel.Controls.Add(linkitem);
        }
        else if (!row.IsSLN_IMAG_CODIGONull())  // é uma imagem
        {
            ASP.include_redesocial_muralitem_imagemitem_ascx imagemitem =
                (ASP.include_redesocial_muralitem_imagemitem_ascx)Page.LoadControl("~/Include/RedeSocial/MuralItem/ImagemItem.ascx");
            imagemitem.PublicacaoCodigo = row.CODIGO;
            imagemitem.ImageCodigo = row.SLN_IMAG_CODIGO;
            imagemitem.Titulo = row.SLN_IMAG_TITULO;
            imagemitem.Descricao = row.SLN_IMAG_DESCRICAO;
            imagemitem.UsuarioCodigo = row.SLN_USUA_CODIGO_AUTOR;
            imagemitem.UsuarioNome = row.SLN_USUA_NOME_AUTOR;
            imagemitem.DthrInclusao = row.DTHR_INCLUSAO;
            imagemitem.Mensagem = row.TEXTO;
            imagemitem.NroCurtidores = row.NRO_CURTIDORES;
            if (!row.IsSLN_PUBL_CODIGONull())
            {
                imagemitem.PublicacaoOrigemCodigo = row.SLN_PUBL_CODIGO;
            }
            if (!row.IsSLN_USUA_CODIGO_ORIGEMNull())
            {
                imagemitem.UsuarioCodigoOrigem = row.SLN_USUA_CODIGO_ORIGEM;
                imagemitem.UsuarioNomeOrigem = row.SLN_USUA_NOME_ORIGEM;
            }
              
            imagemitem.BuscaDados();
            divPanel.Controls.Add(imagemitem);
        }
        else   // é uma mensagem de texto
        {
            ASP.include_redesocial_muralitem_mensagemitem_ascx mensagemitem =
                (ASP.include_redesocial_muralitem_mensagemitem_ascx)Page.LoadControl("~/Include/RedeSocial/MuralItem/MensagemItem.ascx");
            mensagemitem.PublicacaoCodigo = row.CODIGO;
            mensagemitem.UsuarioCodigo = row.SLN_USUA_CODIGO_AUTOR;
            mensagemitem.UsuarioNome = row.SLN_USUA_NOME_AUTOR;
            mensagemitem.DthrInclusao = row.DTHR_INCLUSAO;
            mensagemitem.Mensagem = row.TEXTO;
            mensagemitem.NroCurtidores = row.NRO_CURTIDORES;
            if (!row.IsSLN_PUBL_CODIGONull())
            {
                mensagemitem.PublicacaoOrigemCodigo = row.SLN_PUBL_CODIGO;
            }
            if (!row.IsSLN_USUA_CODIGO_ORIGEMNull())
            {
                mensagemitem.UsuarioCodigoOrigem = row.SLN_USUA_CODIGO_ORIGEM;
                mensagemitem.UsuarioNomeOrigem = row.SLN_USUA_NOME_ORIGEM;
            }
              
            mensagemitem.BuscaDados();
            divPanel.Controls.Add(mensagemitem);
        }
    }
    else    // atividade
    {
        ASP.include_redesocial_muralitem_atividadeitem_ascx atividadeitem =
            (ASP.include_redesocial_muralitem_atividadeitem_ascx)Page.LoadControl("~/Include/RedeSocial/MuralItem/AtividadeItem.ascx");
        atividadeitem.Tipo = row.ATIV_TIPO;
        atividadeitem.Mensagem = row.TEXTO;
        atividadeitem.Codigo1 = row.CODIGO1;
        if (!row.IsCODIGO2Null())
            atividadeitem.Codigo2 = row.CODIGO2;
        else
            atividadeitem.Codigo2 = null;
        if (!row.IsCODIGO3Null())
            atividadeitem.Codigo3 = row.CODIGO3;
        else
            atividadeitem.Codigo3 = null;
        atividadeitem.Secao1 = row.SECAO1;
        if (!row.IsSECAO2Null())
            atividadeitem.Secao2 = row.SECAO2;
        else
            atividadeitem.Secao2 = null;
        if (!row.IsSECAO3Null())
            atividadeitem.Secao3 = row.SECAO3;
        else
            atividadeitem.Secao3 = null;
        atividadeitem.Descricao1 = row.DESCRICAO1;
        if (!row.IsDESCRICAO2Null())
            atividadeitem.Descricao2 = row.DESCRICAO2;
        else
            atividadeitem.Descricao2 = null;
        if (!row.IsDESCRICAO3Null())
            atividadeitem.Descricao3 = row.DESCRICAO3;
        else
            atividadeitem.Descricao3 = null;
        atividadeitem.DthrInclusao = row.DTHR_INCLUSAO;
        atividadeitem.UsuarioCodigo = row.SLN_USUA_CODIGO_MURAL;
        atividadeitem.BuscaDados();
        divPanel.Controls.Add(atividadeitem);
    }
    return tdDadoMural;
}
0
Iana Tsolova
Telerik team
answered on 28 Oct 2010, 08:52 AM
Hi Geraldo,

CAn you elaborate a bit on what happens when you click a button in the grid, does the grid disappear or just the ItemCommand event is not fired?
Is the divPanel you are loading ajaxified? And also, can you specify on which event you are loading the controls and if moving this to Page_Init makes any difference?
Additionally, I suggest that you disable ajax for all ajax controls temporary and see if it them works as expected.

Regards,
Iana
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Geraldo Scarparo
Top achievements
Rank 1
answered on 28 Oct 2010, 01:01 PM
The grid doesn´t disappear, just the ItemCommand is not fired. I´ve observed it when I ran the app in Debug mode.
The divPanel in itself is not ajaxified, it is just an HtmlGenericControl which is dynamically added to each HtmlTableCell the "DadoMuralUsuario" method returns.

This is the method where the DadoMuralUsuario is called:

public void BuscaDados()    // this method is called at the main page
{
    // Efetua operação se estiver visualizando o mural do usuário
    if (IsPaginaUsuario)
    {
        // Pega o nome do usuário e coloca no lbNomeUsuario
        UsuarioDataSetTableAdapters.SLN_VW_USUARIOTableAdapter taUsu = new UsuarioDataSetTableAdapters.SLN_VW_USUARIOTableAdapter();
        string nomeUsu = taUsu.GetNomeByCodigo(UsuarioCodigo);
        lbNomeUsuario.Text = nomeUsu;
        // Pega os dados do mural
        UsuarioDataSetTableAdapters.SLN_VW_MURALTableAdapter ta = new UsuarioDataSetTableAdapters.SLN_VW_MURALTableAdapter();
        UsuarioDataSet.SLN_VW_MURALDataTable dt = new UsuarioDataSet.SLN_VW_MURALDataTable();
        dt = ta.GetDataByUsuarioCodigoMural(UsuarioCodigo);
        // Se não existir registros, esconde a tabela
        if (dt.Count == 0)
        {
            //tabMural.Visible = false;
            divVazio.Visible = true;
        }
        else
        {
            // Insere dados na tabela
            foreach (UsuarioDataSet.SLN_VW_MURALRow row in dt.Rows)
            {
                HtmlTableCell cell = DadoMuralUsuario(row);
                HtmlTableRow trDado = new HtmlTableRow();
                trDado.Cells.Add(cell);
                tabMural.Rows.Add(trDado);
            }
        }
    }
}

And this is the code-behind of the main page:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
  
public partial class investidor_default : System.Web.UI.Page
{
    private string codigo = "";
    private string titulo = "Página";
    private string description = ". Últimas atividades. Investidores com perfil semelhante.";
    private string keywords = "principal, investidor, atividades, investidores, semelhante";
  
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        SetCodigo();
        ((TemplateInvestidor)Master).TituloJanela = titulo;
        ((TemplateInvestidor)Master).TituloPagina = titulo;
        ((TemplateInvestidor)Master).Description = description;
        ((TemplateInvestidor)Master).Keywords = keywords;
        ((TemplateInvestidor)Master).EnableEmbeddedScripts = true;
  
        Page.Form.DefaultButton = RedeSocial201.GetDefaultButton();
  
        if (!((TemplateInvestidor)Master).IsAjaxRequest)
        {
            BuscaDados();
        }
    }
  
    protected void Page_Load(object sender, EventArgs e)
    {
  
    }
  
    protected void SetCodigo()
    {
        codigo = Sln.Usuario.Usuario.CodigoInformado;
  
        if (codigo == null || codigo.Equals(""))
        {
            return;
        }
  
        if (RedeSocial201 != null)
            RedeSocial201.UsuarioCodigo = codigo;
  
    }
  
    protected void BuscaDados()
    {
        UsuarioDataSetTableAdapters.SLN_USUARIOTableAdapter taUsuario = new UsuarioDataSetTableAdapters.SLN_USUARIOTableAdapter();
        UsuarioDataSet.SLN_USUARIODataTable dtUsuario = new UsuarioDataSet.SLN_USUARIODataTable();
  
        if (codigo == null || codigo.Equals(""))
            return;
  
        dtUsuario = taUsuario.GetDataByCodigo(codigo);
        if (dtUsuario.Count > 0)
        {
  
            string nome = Sln.Usuario.Usuario.NomePerfil(codigo);
            if (nome == null)
                nome = dtUsuario[0].NOME;
  
            ((TemplateInvestidor)Master).TituloJanela = titulo + " de " + nome;
            ((TemplateInvestidor)Master).TituloPagina = nome;
            ((TemplateInvestidor)Master).Description = titulo + " de " + dtUsuario[0].NOME + description;
            ((TemplateInvestidor)Master).Keywords = dtUsuario[0].NOME + ", " + keywords;
  
            // Exibe as solicitações do usuário
            if (Sln.Usuario.Usuario.UsuarioPodeAlterarPerfil() &&
                Sln.Usuario.Usuario.SolicitacaoCount(Sln.Usuario.Usuario.CodigoSessao) > 0)
            {
                SolicitacaoLista1.UsuarioCodigo = Sln.Usuario.Usuario.CodigoSessao;
                SolicitacaoLista1.BuscaDados();
            }
            else
            {
                divSolicitacao.Visible = false;
            }
  
        }
  
        if (RedeSocial201 != null)
        {
            RedeSocial201.IsPaginaUsuario = true;
            RedeSocial201.BuscaDados(); // this is where the method is called
        }
  
        Afinidade1.BuscaDados();
  
        if (MembroAmigo1 != null)
        {
            //MembroAmigo1.AmigoDe = codigo;
            MembroAmigo1.Seguido = codigo;
            MembroAmigo1.Titulo = "Seguidores";
            MembroAmigo1.BuscaDados();
        }
  
        if (MembroAmigo2 != null)
        {
            MembroAmigo2.Seguidor = codigo;
            MembroAmigo2.Titulo = "Seguindo";
            MembroAmigo2.BuscaDados();
        }
    }
}

As for disabling Ajax on this page... I disabled Ajax on all RadAjaxPanels used on this page and child controls, but it didn´t work either.

Tks,
Geraldo
0
Iana Tsolova
Telerik team
answered on 01 Nov 2010, 03:56 PM
Hi Geraldo,

As the application did not work as expected with ajax disabled, I assume the issue is connected with the way the controls are created. Please make sure the you are creating all controls OnInit and that you are first setting the controls properties and then adding them to the parent control Controls collection. Also the child controls should be added first to the parent controls Controls collection and then, the parent controls to be added to the Page Controls collection.

Kind regards,
Iana
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Tags
Grid
Asked by
Geraldo Scarparo
Top achievements
Rank 1
Answers by
Geraldo Scarparo
Top achievements
Rank 1
Iana Tsolova
Telerik team
Share this question
or