Pesquisa

segunda-feira, 3 de janeiro de 2011

Desabilitar botão após o click

Solução muito simples para desabilitar o botão após o click.

Essa solução pode ser utilizado em requisições ajax, com update panel.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="scriptManager" AsyncPostBackTimeout="0" runat="server">
</asp:ScriptManager>
<div>
<asp:UpdatePanel runat="server" ID="upPrincipal">
<ContentTemplate>
<asp:Button runat="server" ID="btnSalvar" Text="Salvar"
onclick="btnSalvar_Click" />
<asp:Literal runat="server" ID="ltlTexto"></asp:Literal>
</ContentTemplate>
</asp:UpdatePanel>

</div>
</form>
</body>
</html>

E no code behind:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
btnSalvar.Attributes.Add("onclick", "this.disabled=true;" + Page.ClientScript.GetPostBackEventReference(btnSalvar, String.Empty).ToString());
}
protected void btnSalvar_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(5000);
ltlTexto.Text += DateTime.Now.ToString() + " - ";
}
}

terça-feira, 28 de dezembro de 2010

Enviar e-mail de forma assincrona

Um dos maiores problemas ao fazer envio de e-mail é a tempo que demora o seu envio.

Podemos então enviar os e-mails de forma assincrona, sem interromper a execução do programa.

Utiliza-se a classe System.Net.Mail.MailMessage.

public static void SendEmail(System.Net.Mail.MailMessage m) 
{
SendEmail(m, true);
}

public static void SendEmail(System.Net.Mail.MailMessage m, Boolean Async)
{

System.Net.Mail.SmtpClient smtpClient = null;

smtpClient = new System.Net.Mail.SmtpClient("localhost");

if (Async)
{
SendEmailDelegate sd = new SendEmailDelegate(smtpClient.Send);
AsyncCallback cb = new AsyncCallback(SendEmailResponse);
sd.BeginInvoke(m, cb, sd);
}
else
{
smtpClient.Send(m);
}

}

private delegate void SendEmailDelegate(System.Net.Mail.MailMessage m);

private static void SendEmailResponse(IAsyncResult ar)
{
SendEmailDelegate sd = (SendEmailDelegate)(ar.AsyncState);

sd.EndInvoke(ar);
}




domingo, 19 de dezembro de 2010

Configurar D-Link 524

WAN Settings:
- PPPoE: Choose this option if your ISP uses PPPoE. (For most DSL users)

PPP over Ethernet
- Dynamic PPPoE
- Maximum Idle Time: 0
- MTU: 1305

config modem

performance modem

terça-feira, 26 de outubro de 2010

Como desativar Constraints

--Desabilitar:
ALTER TABLE NOMETABELA NOCHECK CONSTRAINT ALL
--Habilitar:
ALTER TABLE NOMETABELA CHECK CONSTRAINT ALL




Limpar banco de dados / tabelas

Script para limpar todas as tabelas do banco de dados.

  • Deletar registros
  • Limpar os Idenficadores (CHECKIDENT)
BEGIN TRAN

PRINT 'BEGIN TRAN'

DECLARE @Tabela VARCHAR(50)
DECLARE @DadosAdmin CHAR(1)
DECLARE @ReSeed CHAR(1)
DECLARE @SQL VARCHAR(1000)

-- DECLARA O CURSOR QUE VAI PASSA PELAS TABELAS
DECLARE tables_cursor CURSOR FOR
SELECT name
from sysobjects
where xtype = 'U'
AND name IN()

-- ABRE O CURSOR E CARREGA AS VARIÁVEIS COM OS DADOS DA PRIMEIRA TABELA
OPEN tables_cursor
FETCH NEXT FROM tables_cursor INTO @Tabela

-- LOOP PARA PERCORRER TODAS AS TABELAS PRESENTES NO CURSOR
WHILE @@FETCH_STATUS = 0
BEGIN

-- SCRIPT PARA DESABILITAR TRIGGERS E CONSTRAINTS
SET @SQL = '
------------------------------------------------------------------
ALTER TABLE '
+ @Tabela + ' NOCHECK CONSTRAINT ALL
GO
ALTER TABLE '
+ @Tabela + ' DISABLE TRIGGER ALL
GO
------------------------------------------------------------------
'

--EXEC(@SQL)
PRINT(@SQL)


FETCH NEXT FROM tables_cursor INTO @Tabela
END

-- FECHA O CURSOR PARA RESETAR O LOOP
CLOSE tables_cursor

PRINT '
------------------------------------------------------------------
------------------------------------------------------------------
------ FIM DA DESABILITAÇÃO DE TRIGGERS E CONSTRAINTS ------
------------------------------------------------------------------
------------------------------------------------------------------
'


-- ABRE NOVAMENTE O CURSOR PARA EFETUAR O SEGUNDO LOOP
OPEN tables_cursor
FETCH NEXT FROM tables_cursor INTO @Tabela

WHILE @@FETCH_STATUS = 0
BEGIN

-- DELETA OS REGISTROS DA TABELA
SET @SQL = '------------------------------------------------------------------
DELETE FROM '
+ @Tabela
SET @ReSeed = '0'

-- HABILITA TRIGGERS E CONSTRAINTS
-- E RESETA A CONTAGEM SE A TABELA POSSUI UMA COLUNA IDENTITY
-- * SE A TABELA POSSUI DADOS DO ADMIN, A CONTAGEM DA IDENTITY RECEBE 1
-- PARA INICIAR EM 2 A PARTIR DO PRÓXIMO REGISTRO
SET @SQL = @SQL + '
GO
ALTER TABLE '
+ @Tabela + ' CHECK CONSTRAINT ALL
GO
ALTER TABLE '
+ @Tabela + ' ENABLE TRIGGER ALL
GO

IF OBJECTPROPERTY(OBJECT_ID('
'' + @Tabela + '''), ''TableHasIdentity'') = 1
BEGIN
DBCC CHECKIDENT ('
'' + @Tabela + ''',RESEED,' + @ReSeed + ')
END
GO
------------------------------------------------------------------
'

--EXEC(@SQL)
PRINT(@SQL)

FETCH NEXT FROM tables_cursor INTO @Tabela
END

-- EXEC(@SQL)
PRINT (@SQL)

CLOSE tables_cursor

DEALLOCATE tables_cursor

ROLLBACK TRAN

Créditos: Tiago Bandeira

terça-feira, 12 de outubro de 2010

BlogEngine.NET

BlogEngine.NET é uma ótima ferramenta para gerenciamento de conteúdo.

É fácil de configurar, personalizar e usar.

http://www.dotnetblogengine.net/

domingo, 3 de outubro de 2010

The 'System.Web.Security.SqlMembershipProvider' requires a database schema compatible with schema version '1'

 

A Exception The 'System.Web.Security.SqlMembershipProvider' requires a database schema compatible with schema version '1'.  However, the current database schema is not compatible with this version.  You may need to either install a compatible schema with aspnet_regsql.exe (available in the framework installation directory), or upgrade the provider to a newer version. ocorre quando a tabela aspnet_SchemaVersions não contém a versão do MembershipProvider.

Para inserir os registros na tabela aspnet_SchemaVersions segue abaixo o script:

insert into aspnet_SchemaVersions values('common', 1, 1)
insert into aspnet_SchemaVersions values('health monitoring', 1, 1)
insert into aspnet_SchemaVersions values('membership', 1, 1)
insert into aspnet_SchemaVersions values('personalization', 1, 1)
insert into aspnet_SchemaVersions values('profile', 1, 1)
insert into aspnet_SchemaVersions values('role manager', 1, 1)



segunda-feira, 26 de julho de 2010

VSS – Utilizando a tecla SHIFT

No Microsoft Visual SourceSafe, ao clicar com o botão esquerdo sobre alguma das opções dos projetos, utilizar o botão SHIFT, assim, aparecerá algumas opções mais avançadas.

Checked - Verificar OverflowException

Utilizar o checked para verificar a consistência numérica de uma operação matemática.

public void Somar()
{
Int16 valor = 32767;
checked
{
valor += 5;
}
}

Um material bem interessante encontra-se aqui: U is for… unchecked

SQL - Geração Automática de Dados

Um ótimo artigo mostrando como utilizar o visual studio para a geração de dados para bancos de dados SQL:
Visual Studio Team System 2008 DataBase Edition Parte IV: Geração Automática de Dados
É utilizado um Database Project e um Data Generation Plan. É possível utilizar expressões regulares para manter um padrão no momento de gerar a carga de dados.