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!
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)
4df93062-261d-41a2-9d17-469c43cf8a51|1|5.0
Tags:
C#
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.
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.
bfc126b9-3cf0-4cc8-b22f-ea79e8d647cb|1|5.0
Tags:
ASP.NET | C#
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.
9d34e400-e3b0-4077-be48-bb88cca40b79|0|.0
Tags:
ASP.NET | C#