Problema de lentidão no HTML Source View do Visual Studio 2008

by Thyago Matos 13. November 2009 20:43

Ultimamente tenho notado uma crescente lentidão ao salvar qualquer alteração nos arquivos .aspx e aspx.cs de modo que essa demora chegou ao cúmulo de um minuto e meio para que a tela voltasse ao estado em que pudesse continuar a trabalhar. Após uma breve pesquisa encontrei um hotfix para o Visual Studio para solucionar este problema, porém mesmo depois de instalar a atualização a lentidão ainda continuava. Analisando o tamanho dos arquivos .aspx e aspx.cs pensando que o tamanho pudesse estar influenciando na lentidão, notei que o arquivo .sln estava com um tamanho de quase 1 MB. Criei um novo arquivo .sln que tem por volta de 100 KB e por incrível que pareça o grande problema da lentidão acabou.

Caso estejam passando pelo mesmo problema crie um novo arquivo .sln, que pelo menos no meu caso funcionou perfeitamente.

É isso aí, até a próxima!

Tags:

ASP.NET | Visual Studio

Gerar marcações sequênciais - Google Maps

by Thyago Matos 7. October 2009 21:27

Mexendo com um mini ERP que tem como foco empresas de monitoramento e rastreamento de veículos, tive a necessidade contruir uma tela onde mostraria um mapa, neste caso utilizei o Google Maps. Precisei que as marcações do mapa sejam numéricos e sequenciais, para tanto criei este programa que gera estas marcações sequenciais. O tamanho da marcação adotada possibilita que seja gerada marcações de 01 a 99.

Fiquem a vontade críticas e sugestões.

GravaTextoImage.zip (20,49 kb)

Tags:

C#

Removendo os Recent Projects do Visual Studio

by Thyago Matos 24. August 2009 15:02

Este é um aplicativo muito util para quem trabalha com vários projetos no VS ou para quem como eu que tem o hábito de ficar testando programas do CodePlex.

http://vsrecentfiles.codeplex.com/

Ele limpa os projetos abertos recentemente e os que não tem mais a pasta do projeto. Muito legal!

Flw.

 

Tags:

Visual Studio

Selecionando somente um registro no Gridview com Checkbox

by Thyago Matos 23. July 2009 09:27

Geralmente quando se trabalha com checkbox no gridview se tem a necessidade de poder selecionar multiplos registros do grid. Para isso tem vários artigos onde ensina como fazer isto, dentre eles um feito pelo Rodrigo Kono (ASP.NET 2.0: Selecionando múltiplos registros no Gridview com Checkbox). Porém tive a necessidade de só poder selecionar somente um registro no gridview, ou seja, quando marcar um checkbox tem que desmarcar os outros que estiverem selecionados. Para isso adaptei o código javascript para tal.

<script type="text/javascript">
    function DesmarcarTodos(objeto) {
        var itens = document.getElementsByTagName('input');
        for (var index = 0; index < itens.length; index++) {
            if (itens[index].type == "checkbox" && itens[index].name != objeto.name) {
                itens[index].checked = false;
            }
        }
    }  
</script>

E no checkbox que está no gridview adicionei o seguinte código:

<asp:GridView ID="gvEmpresas" runat="server" AutoGenerateColumns="False">   
    <Columns>
        <asp:TemplateField Visible="False" HeaderText="Codigo Empresa">
            <ItemTemplate>
                <asp:Label ID="lblCodEmp" runat="server" Text='<%# Bind("CODIGO_EMP") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="NOME_EMP" HeaderText="Razão Social" />
        <asp:BoundField DataField="NOME_FANTASIA_EMP" HeaderText="Nome Fantasia" />
        <asp:BoundField DataField="CNPJ_EMP" HeaderText="CNPJ" />
        <asp:TemplateField HeaderText="Selecionar" ItemStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <asp:CheckBox ID="chkEmpresa" runat="server" onclick="javascript:DesmarcarTodos(this);" />
            </ItemTemplate>           
        </asp:TemplateField>
    </Columns>
</asp:GridView>

Com isso ao clicar no checkbox o javascript busca todos os elementos do formulário que sejam do tipo input e depois onde o type seja checkbox e o name seja diferente do checkbox clicado. Deste jeito ele desmarca todos os outros checkbox´s. Uma função simples e que serve perfeitamente para o propósito.

Até mais.

Tags:

ASP.NET | C#

Utilizando o Controle Wizard - ASP.NET

by Thyago Matos 21. April 2009 02:10

Precisei de fazer um formulário de inscrição onde dependendo de algumas validações o usuário seria direcionado para o passo seguinte ou a um passo mais adiante. Recebi uma sugestão de utilizar o controle Wizard, daí então dei inicio ao desenvolvimento. Como alguns passos só podiam ser acessados caso um outro passo tivesse válido, começei a procurar um artifício para controlar a navegação entre estes. Segue um exemplo do wizard criado.

<asp:Wizard ID="Wizard1" runat="server" ActiveStepIndex="0" OnNextButtonClick="Wizard1_NextButtonClick"
    OnFinishButtonClick="Wizard1_FinishButtonClick">
    <WizardSteps>
        <asp:WizardStep ID="WizardStep1" runat="server" Title="Consulta CNPJ">
            <table style="width: 100%;">
                <tr>
                    <td>
                        Digite um CNPJ
                    </td>
                    <td>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                    </td>
                </tr>
            </table>
        </asp:WizardStep>
        <asp:WizardStep ID="WizardStep2" runat="server" Title="Cadastra Cliente">
            Cadastro dos dados do cliente</asp:WizardStep>
        <asp:WizardStep ID="WizardStep3" runat="server" Title="Consulta CPF">
            <table style="width: 100%;">
                <tr>
                    <td>
                        Digite um CPF
                    </td>
                    <td>
                        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                    </td>
                </tr>
            </table>
        </asp:WizardStep>
        <asp:WizardStep ID="WizardStep4" runat="server" Title="Cadastra Contato">
            Cadastro dos dados do contato</asp:WizardStep>
        <asp:WizardStep ID="WizardStep5" runat="server" Title="Confirma Dados" StepType="Finish">
            Confirme os dados</asp:WizardStep>
    </WizardSteps>
</asp:Wizard>

Temos 5 passos da nossa inscrição: Consulta CNPJ, Cadastra Cliente, Consulta CPF, Cadastra Contato e Confirma Dados. Como podem ver utilizando o evento NextButtonClick temos como saber em qual passo se está ao clicar no botão Next, desse modo a cada passo fazer as devidas validações para que se possa passar para o passo seguinte.

protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
    switch (Wizard1.ActiveStep.ID)
    {
        // Valido o cnpj da empresa
        case "WizardStep1":
            if (true)
            {
                /// Passa para o próximo passo
                Wizard1.ActiveStep.ID = "WizardStep3";
            }
            else
            {
                /// Cancela a navegação para o próximo passo
                e.Cancel = true;
            }
            break;
        // Algum cadastro
        case "WizardStep2":
            /// Faz validação dos campos de cadastro
            break;
        // Valido o cpf do contato
        case "WizardStep3":
            if (true)
            {
                // Passa para o próximo passo
                Wizard1.ActiveStep.ID = "WizardStep4";
            }
            else
            {
                // Cancela a navegação para o próximo passo
                e.Cancel = true;
            }
            break;
        case "WizardStep4":
            // Faz validação dos campos de cadastro
            break;
        case "WizardStep5":
            // O passo 5 é somente uma tela de confirmação de dados
            break;
    }
}

Uma caracteristica bem interessante é que, ao direcionar para um passo seguinte este manter um histórico da sequência de modo que ao voltar um passo ele volta ao passo que redirecionou para ele e não para o passo anterior, como deveria de ser. Isto é legal pois evita ter que fazer validações para saber se o usuário irá ter acesso a um passo que não é preciso passar.

Com o evento FinishButtonClick podemos pegar as informações inseridas nos campos  e gravá-las como bem quiser. Outro ponto bem funcional é que ao navegar pelos passos do wizard este mantem o estado dos controles de modo que no evento FinishButtonClick podemos pegar as informações que foram digitadas ao longo dos passos.

protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
{
    // Persiste as informações
}

Podemos perceber que o controle wizard nos proporciona uma boa flexibilidade para trabalhar em cenários do tipo inscrição e outros que necessitam de passos sequênciais.

Até a próxima.

Tags:

ASP.NET | C#