3
respostas

Como pegar objeto ativo do lado cliente no C#

Bom dia pessoal.

Estou tentando exportar uma tabela com vários anos para o excel, e atualmente só está exportando para o ano atual. Na meu método de exportação tenho o parâmetro ano que está recebendo apenas 2018. Meu projeto está em ASP.NET e estou precisando fazer uma função no C# onde pego o ano da aba que está ativa e passar este ano para minha função. Desta forma acho que resolveria meu problema para exportar o ano correspondente da aba. Como faço para pegar o ano que está ativo na aba em C#?

Procedimento que estou tentando:

Do lado do servidor o seguinte método chamado no click do botão exportar:

protected void btnExportarExcel_Click(object sender, EventArgs e)
{ 
    //Aqui quero pegar o ano ativo do lado cliente int ano = ???? carregaExportar(ano);
}

Tinha pensado em fazer pelo JS, mas não vai ser possível, pois o método exportarExcel que tenho que chamar já está pronto, estou apenas mantendo e ele não pode ser estático. Para fazer pelo javascript teria que colocar o WebMethod e passar para estático. Estou tentando dar um jeito de pegar a aba selecionada do lado servidor, não sei se é possível, pois desta forma chamo o método passando o ano. Pensei em uma outra forma que seria montar três tabelas no método exportar, sendo uma para cada ano. Atualmente o código exportar está assim(trecho do código):

if (listaVariaveisDoIndicador.Count != 0)
{
    //Para exportação em colunas
    tabelaExportacao.Append("<table id='tableExportacao'>");
    tabelaExportacao.Append("<tr><td colspan='3'> <b>" 
        + listaVariaveisDoIndicador[0].Indicador.sigla 
        + " - " 
        + listaVariaveisDoIndicador[0].Indicador.nome 
        + " </b></td></tr>");
    tabelaExportacao.Append("<tr><td><b>Sigla da Variável</b></td>");
    tabelaExportacao.Append("<td><b>Nome da Variável</b></td>");
    tabelaExportacao.Append("<td><b>Valor da Variável</b></td></tr>");


    //Para exportação em Bloco
    tabelaExportacaoBloco.Append("<table id='tableExportacaoBloco'>");
    tabelaExportacaoBloco.Append("<tr><td colspan='2'> <b>" 
        + listaVariaveisDoIndicador[0].Indicador.sigla 
        + " - " 
        + listaVariaveisDoIndicador[0].Indicador.nome 
        + " </b></td></tr>");
    tabelaExportacaoBloco.Append("</tr>");

Poderia montar uma tabela para cada ano?

A chamada está no aspx:

Exportar em colunas

Exportar igual à ficha

Só não sei como seria a chamada de três tabelas dependendo do ano ativo.

Alguém teria alguma sugestão mais simples onde tenho que pegar o ano ativo na aba e ao clicar no botão exportar - exportar dados do ano escolhido para o excel.

Obrigada. Flávia

3 respostas

Oi Flávia, tudo bem?

Estou com umas dúvidas sobre o seu cenário:

  • Seu projeto é ASP.NET 4 (não-MVC) com Web Forms?
  • Que componentes você está usando? Componentes de terceiros (ex.: DevExpress, ComponentOne, etc ?)
  • A variável tabelaExportacaoBloco é de qual tipo?

Oi Marcelo. Agradeço a ajuda, mas já resolvi este tópico.

Obrigada. Flávia

Excelente, Flávia, obrigado por participar do fórum!