trashCanMan
Power Member
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
Metodo que actualiza a BD
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
Código:
/// <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;
}
Código:
/// <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();
}
}