sexta-feira, 19 de junho de 2009

Condição SQL Oracle

Criando uma codição no prompt do SQL Plus (Oracle):

declare

v_count number;

begin

select count into v_count from all_tables where table_name=v_nome_tabela;

if v_count > 0 then

drop table v_nome_table as cascade;

end if;

end;

 
"No caso" é um se a tabela existe então faça o drop. É isso.

Update Panel na MasterPage via SubPage

Cenário: Um página com masterpage, updatepanel na masterpage, e na subpage outro updatepanel.
Situação: Quando é feito post na subpage precisa atualiza o updatepanel da masterpage.
Porque: Neste post é atualizado valores de controles da masterpage que precisão ser exibidos
 

((UpdatePanel)Master.FindControl("updatePanelMaster")).Update();

 
Nota: Se seu updatepanel é muito pesado, (+ de 5 quilos de controles), recomendo fazer po javascript como já demonstrado aqui.
 
 

quinta-feira, 18 de junho de 2009

System.Linq.OrderedEnumerable tipo System.Collections.Generic.List

Problema: Não tenho com alterar o XML do mapeamento do nHibernate para ordernar a query
Solução: Implementar um especifica ordenação no GetAll()
 
        public IList<qqClass> GetAll()
        {
               return qqClass.GetAll().OrderBy(qqClasses => qqClasses.Name).ToList<qqClass>();
        }
 
Comentários: Não tem como fazer direto, pois é um Enumerable (linq) com um Collections(list)

How to call client-side Javascript function after an UpdatePanel asychronous (Ajax) request is over

Necessidade: Fazer atualização de um controle que está na masterpage quando retorna do postback do ajax.
Problema: É utilizado no contentpage o updatepanel, atualizando somente os controles que estão no updatepanel, a masterpage não sofre refresh.
Solução: Adicionar (registrar) uma função javascript e O COMANDO.
 
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(suaFunctionJavaScript)
 
em seu page load você pode colocar:
 
if (!Page.ClientScript.IsClientScriptBlockRegistered(UpdatePanel1.GetType(), "resetDefaultFired")) {
    string resetGlobalVar = "function message() { document.getElementById('" + (Master.FindControl("lblMessage") as  Label).ClientID + "').innerHTML = document.getElementById('" + lblMessage.ClientID + "').innerHTML; }";
resetGlobalVar += " Sys.WebForms.PageRequestManager.getInstance().add_endRequest(message); ";
Page.ClientScript.RegisterStartupScript(UpdatePanel1.GetType(), "resetDefaultFired", resetGlobalVar, true
);
}
 
Então você envia o que você quer para um controle "lblMessage" e o outro controle "master lblMessage" recebe.