Visualizador do SQL Reporting Services para página da Web - você pode mover o botão Exibir relatório?

StackOverflow https://stackoverflow.com/questions/20744

Pergunta

Usando o controle do visualizador para exibição de relatórios do SQL Reporting Services na página da web (Microsoft.ReportViewer.WebForms), você pode mover o botão Exibir relatório?O padrão é o lado direito do relatório, o que significa que você precisa rolar até o fim antes que o botão fique visível.Não é um problema para relatórios que se ajustam à largura da janela, mas para relatórios muito amplos isso rapidamente se torna um problema.

Foi útil?

Solução

É meio que um hack, mas você pode movê-lo em JavaScript.Basta ver qual HTML o ReportViewer gera e escrever o código JavaScript apropriado para mover o botão.Usei JavaScript para ocultar o botão (porque queríamos nosso próprio botão Visualizar relatório).Qualquer código JavaScript que manipule o HTML do ReportViewer gerado deve vir depois do controle ReportViewer na página .aspx.Aqui está meu código para ocultar o botão, para lhe dar uma ideia do que você faria:

function getRepViewBtn() {
  return document.getElementsByName("ReportViewer1$ctl00$ctl00")[0];
}

function hideViewReportButton() { // call this where needed
  var btn = getRepViewBtn();
  btn.style.display = 'none';
}

Outras dicas

Não, você não pode reposicionar o botão visualizar relatório no controle ReportViewer.

No entanto, você pode criar seu próprio controle de visualização de relatório personalizado.O controle seria composto por campos para parâmetros do relatório e um botão para geração do relatório.Quando um usuário clica no botão, você pode gerar o relatório em segundo plano.Você pode exibir o relatório como PDF, HTML, etc.

A razão pela qual o botão é empurrado para a direita é que o td dos parâmetros tem largura = "100%".Estou resolvendo esse problema com o seguinte jquery.Simplesmente altera a largura dos parâmetros td para 1.Os navegadores expandirão a largura por conta própria até a largura do conteúdo do elemento.Espero que isto ajude.

<script type="text/javascript">
    $(document).ready(function() {
        $("#<%= ReportViewer1.ClientID %> td:first").attr("width", "1");
    });
</script>

Como ontem estava procurando essa resposta, pensei em postar o que descobri para resolver nosso problema.Nossos relatórios estavam voltando amplamente e queríamos que o botão "visualizar relatórios" existisse no lado esquerdo do controle para que não houvesse necessidade de rolar para chegar ao botão.Eu precisei ir até a origem do arquivo renderizado para encontrar os nomes de ID do botão e da tabela de destino.

Eu escrevi uma função javascript simples de recortar e colar para puxar o botão de sua posição original e, essencialmente, soltá-lo na próxima linha da tabela abaixo dos seletores de data.

function moveButton() {
  document.getElementById('ParameterTable_ctl00_MainContent_MyReports_ctl04').appendChild(document.getElementById('ctl00_MainContent_MyReports_ctl04_ctl00'));
        }

Essa função é chamada no evento de carregamento do visualizador de relatório.

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "moveButton", "moveButton();", True)

Para ajustar a posição, usei o ID CSS.

#ctl00_MainContent_MyReports_ctl04_ctl00 {
    margin: 0px 0px 0px 50px;
}

Tive o mesmo problema e acabei usando uma extensão na resposta de Travis Collins;Além de alterar a largura da coluna da tabela, também alinho o botão "Visualizar relatório" à esquerda para que pareça mais próximo do restante dos controles.

    <script type="text/javascript">
  $(document).ready(function() {
     $("#_ctl0_MainContent_reportViewer_fixedTable tr:first td:first-child").attr("width", "1"); 
     $("#_ctl0_MainContent_reportViewer_fixedTable tr:first td:last-child").attr("align", "left");   
  });
</script>

Talvez seja necessário ajustar o seletor JQuery dependendo da nomenclatura do elemento atribuída ao seu controle existente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top