Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

trashCanMan

Refresh Repeater com TableAdapter ASP

Recommended Posts

trashCanMan

Boas pessoal,

Tenho à algum tempo um grave problema em mãos, que se resume ao seguinte:

tenho um Repeater que é populado através de um TableAdapter, até aqui tudo bem, o problema é que quando faço Update a esse adapter, para inserir um novo registo (ou remover) e tento fazer refresh ao Repeater, estas actualizações não têem logo efeito (só depois de fazer postback). Já notei que depois de fazer o Update, o registo está mesmo incluido no TableAdapter e também na propria BD, contudo ao fazer o bind ao Repeater (mesmo com o numero certo de registos), esta nao é actualizada!!! De notar que isto não acontece sempre!!

Alguem tem ideia do que se passa?

Obrigado

Metodo que faz o bind ao Repeater

/// <summary>
        /// Configura a GridView que imprime as paginas relacionadas com determinada categoria
        /// </summary>
        private bool PopulateRptParesPaginaCategoria()
        {
            bool greatSuccess = false;
            TMapaDoSite_ComCategoriaTableAdapter adpMapaDoSiteComCategoria =
                    new TMapaDoSite_ComCategoriaTableAdapter();
            try
            {
                ESAF_DS_MapaDoSite.TMapaDoSite_ComCategoriaDataTable dtMapaDoSiteComCategoria =
                    adpMapaDoSiteComCategoria.Get_TMapaDoSite_ComCategoria_ByCodCat(this.ddlTodasAsCategorias.SelectedValue);
                //-->
                dtMapaDoSiteComCategoria.AcceptChanges();
                //-->
                
                this.rptParesPaginaCategoria.DataSource = dtMapaDoSiteComCategoria;
                this.rptParesPaginaCategoria.DataBind();
                
                if (dtMapaDoSiteComCategoria.Rows.Count > 0)
                {
                    
                    this.btnEliminarParCategoriaPagina.Enabled = true;
                }
                else
                {
                    lblErro.Text = "Não existem páginas associadas à categoria escolhida";
                    this.btnEliminarParCategoriaPagina.Enabled = false;
                }
                greatSuccess = true;
            }
            catch (Exception ex)
            {
                LogException(ex);
                this.lblErro.Text = "Ocorreu um erro ao listar as páginas da categoria seleccionada<br/>Por favor, contacte o Administrador";
                greatSuccess = false;
                this.btnEliminarParCategoriaPagina.Enabled = false;
            }
            finally
            {
                adpMapaDoSiteComCategoria.Dispose();
            }
            return greatSuccess;
        }

Metodo que actualiza a BD

/// <summary>
        /// Fires when the button is clicked
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnAssociarParCategoriaPagina_Click(object sender, EventArgs e)
        {
            TMapaDoSiteTableAdapter adpMapaDoSite = new TMapaDoSiteTableAdapter();
            try
            {
                ESAF_DS_MapaDoSite.TMapaDoSiteDataTable dtMapaDoSite_ByCodCat = adpMapaDoSite.Get_TMapaDoSite_ByCodCat(this.ddlTodasAsCategorias.SelectedValue);
                ESAF_DS_MapaDoSite.TMapaDoSiteDataTable dtMapaDoSite = adpMapaDoSite.Get_TMapaDoSite();

                if (this.lbxTodasAsPaginasFO.SelectedItem != null && ddlTodasAsCategorias.SelectedItem != null)
                {
                    ESAF_DS_MapaDoSite.TMapaDoSiteRow drMapaDoSite = dtMapaDoSite.NewTMapaDoSiteRow();
                    drMapaDoSite.CodCat = this.ddlTodasAsCategorias.SelectedValue;
                    drMapaDoSite.TabId = Int32.Parse(lbxTodasAsPaginasFO.SelectedValue);
                    drMapaDoSite.Titulo = lbxTodasAsPaginasFO.SelectedItem.Text;
                    drMapaDoSite.Ordem = dtMapaDoSite_ByCodCat.Rows.Count > 0 ? ((int)dtMapaDoSite_ByCodCat.Compute("MAX(Ordem)", string.Empty)) + 1 : 1;
                    drMapaDoSite.DTCRIA = DateTime.Now;
                    drMapaDoSite.USERCRIA = UserInfo.Username;

                    //dtMapaDoSite.AddTMapaDoSiteRow(drMapaDoSite);
                    dtMapaDoSite.Rows.Add(drMapaDoSite);
                    adpMapaDoSite.Update(dtMapaDoSite);
                    dtMapaDoSite.AcceptChanges();

                    this.PopulateLbxTodasAsPaginasFO();
                    this.PopulateRptParesPaginaCategoria();
                    this.lblErro.Text = "";
                }
                else
                {
                    this.lblErro.Text = this.lbxTodasAsPaginasFO.SelectedItem == null ? "Favor escolher uma página para associar à categoria seleccionada" : "Favor escolher uma categoria para associar à página seleccionada";
                }
                
            }
            catch (Exception ex)
            {
                LogException(ex);
                this.lblErro.Text = "Ocorreu um erro ao associar a página escolhida à categoria pretendida<br/>Por favor, contacte o Administrador";
            }
            finally
            {
                adpMapaDoSite.Dispose();
            }
        }

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.