Fala galera,
Segue um código rápido para quem precisa executar métodos em threads separadas da thread principal com passagem de parâmetros:
public void meuMetodo(string param1, string param2)
{
}
Thread t = new Thread(()=>meuMetodo("abc", "def"));
t.Start();
Um abraço e até a próxima!!
quarta-feira, 12 de fevereiro de 2014
quinta-feira, 6 de fevereiro de 2014
Timeout ao utilizar HttpWebRequest com protocolo HTTPS
Fala galera,
Segue mais um código pra contornar um problema comum no .net para quem precisa trabalhar com WebRequests acessando uma url através do protocolo HTTPS.
O erro que costuma ocorrer é uma mensagem de "Timeout exceeded" (Tempo limite excedido) e a solução é bastante simples. Basta adicionar as 2 linhas abaixo:
//Esta linha fará com que o certificado não seja validado (Útil em casos onde há problemas com o ceritificado)
System.Net.ServicePointManager.CheckCertificateRevocationList = false;
//Esta linha fará com que o tipo de protocolo de segurança a ser utilizado seja o SSL3 ao invés do TLS (que parece ser o protocolo padrão)
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3;
Um abraço e até a próxima!!
Segue mais um código pra contornar um problema comum no .net para quem precisa trabalhar com WebRequests acessando uma url através do protocolo HTTPS.
O erro que costuma ocorrer é uma mensagem de "Timeout exceeded" (Tempo limite excedido) e a solução é bastante simples. Basta adicionar as 2 linhas abaixo:
//Esta linha fará com que o certificado não seja validado (Útil em casos onde há problemas com o ceritificado)
System.Net.ServicePointManager.CheckCertificateRevocationList = false;
//Esta linha fará com que o tipo de protocolo de segurança a ser utilizado seja o SSL3 ao invés do TLS (que parece ser o protocolo padrão)
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3;
Um abraço e até a próxima!!
Marcadores:
https,
HttpWebRequest,
tempo limite excedido,
timeout,
timeout exceeded,
WebRequest
quarta-feira, 30 de outubro de 2013
Ajaxtoolkit - cannot read property '_notified' of null
Fala, galera!!
Hoje me deparei com a seguinte mensagem de erro ao utilizar um AutocompleteExtender dentro de um updatepanel associado a um updateprogress: "Cannot read property '_notified' of null".
O mais estranho é que o erro só acontece no Google Chrome. Após uma breve pesquisa, descobri que o erro trata-se de um problema no código de detecção do browser do arquivo MicrosoftAjax.js que não detecta o webkit.
O webkit é um mecanismo de renderização de páginas utilizado por browsers como o Google Chrome e Safari.
Para contornar esse problema basta incluir o código abaixo na sua página aspx:
<script type="text/javascript">
Sys.Browser.WebKit = {};
if (navigator.userAgent.indexOf('WebKit/') > -1) {
Sys.Browser.agent = Sys.Browser.WebKit;
Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
Sys.Browser.name = 'WebKit';
}
</script>
Um abraço e até a próxima!!
Hoje me deparei com a seguinte mensagem de erro ao utilizar um AutocompleteExtender dentro de um updatepanel associado a um updateprogress: "Cannot read property '_notified' of null".
O mais estranho é que o erro só acontece no Google Chrome. Após uma breve pesquisa, descobri que o erro trata-se de um problema no código de detecção do browser do arquivo MicrosoftAjax.js que não detecta o webkit.
O webkit é um mecanismo de renderização de páginas utilizado por browsers como o Google Chrome e Safari.
Para contornar esse problema basta incluir o código abaixo na sua página aspx:
<script type="text/javascript">
Sys.Browser.WebKit = {};
if (navigator.userAgent.indexOf('WebKit/') > -1) {
Sys.Browser.agent = Sys.Browser.WebKit;
Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
Sys.Browser.name = 'WebKit';
}
</script>
Um abraço e até a próxima!!
Marcadores:
_notified,
ajax,
ajaxtoolkit,
autocomplete,
cannot read property,
chrome,
webkit
sábado, 10 de agosto de 2013
Desabilitando itens no dropdownlist
Fala galera,
Após muito tempo de inatividade no blog, segue mais um compartilhamento de código.
Durante essa semana me deparei com a necessidade de categorizar os itens dentro de um dropdownlist.
Algo mais ou menos assim:
Categoria 1
--- item 1.1
--- item 1.2
--- item 1.3
Categoria 2
--- item 2.1
--- item 2.2
--- item 2.3
Acontece que os itens "categoria 1" e "categoria 2" são apenas informativos e não podem ser selecionáveis.
Para isso, é preciso desabilitar a opção de seleção desses itens.
Definir o atributo "enabled" no server-side como false não soluciona o problema. É preciso trabalhar com os atributos no lado do cliente.
Segue então o código para desabilitar o item no dropdown:
Um abraço e até a próxima!!
Após muito tempo de inatividade no blog, segue mais um compartilhamento de código.
Durante essa semana me deparei com a necessidade de categorizar os itens dentro de um dropdownlist.
Algo mais ou menos assim:
Categoria 1
--- item 1.1
--- item 1.2
--- item 1.3
Categoria 2
--- item 2.1
--- item 2.2
--- item 2.3
Acontece que os itens "categoria 1" e "categoria 2" são apenas informativos e não podem ser selecionáveis.
Para isso, é preciso desabilitar a opção de seleção desses itens.
Definir o atributo "enabled" no server-side como false não soluciona o problema. É preciso trabalhar com os atributos no lado do cliente.
Segue então o código para desabilitar o item no dropdown:
System.Web.UI.WebControls.ListItem item = ddl.Items.FindByValue("[valor]"); if (item != null) { item.Attributes.Add("style", "color:gray;"); item.Attributes.Add("disabled", "true"); }
Onde [valor] corresponde ao valor que identifica o item(propriedade value) que deve ser desabilitado.
Um abraço e até a próxima!!
Marcadores:
.Net,
C#,
desabilitar itens,
disabling dropdown items,
dropdownlist,
itens não selecionáveis
quarta-feira, 26 de dezembro de 2012
Ordenação de dados em Gridview
Fala, galera!!
Hoje postarei uma solução simples utilizando JQuery para uma tarefa um pouco trabalhosa se feita via C# puro: Ordenação de dados em GridView.
Para isso, utilizaremos o plugin TableSorter para Jquery que pode ser encontrado em http://tablesorter.com/docs/.
Para começar, adicione o seguinte código ao code-behind para que sejam incluídas na sua gridview as seções <thead> e <tbody> que serão utilizadas pelo TableSorter:
protected void GridView1_PreRender(object sender, EventArgs e)
{
//As 2 linhas abaixo só devem ser adicionadas se você não estiver utilizando ObjectDataSource, SqlDataSource ou LinqDataSource
GridView1.DataSource = "SEU DATASOURCE";
GridView1.DataBind();
if (GridView1.Rows.Count > 0)
{
//Substitui <td> por <th>
GridView1.UseAccessibleHeader = true;
//Adiciona <thead> e <tbody>
GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
}
}
Adicione as referências e o script abaixo em sua página ASPX e seu gridview estará com a ordenação funcionando:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="/script/tablesorter/jquery.tablesorter.js"></script>
<link rel="stylesheet" href="/script/tablesorter/themes/blue/style.css" type="text/css" id="" media="print, projection, screen" />
$(document).ready(function() {
$("#<%=GridView1.ClientID%>").tablesorter();
});
É possível a criação de widgets que fazem com que a ordenação selecionada seja persistida durante a sessão do usuário. Mais informações em: http://ybits.net/2009/10/making-jquery-tablesorter-persistent/
Um abraço e até a próxima!!
Hoje postarei uma solução simples utilizando JQuery para uma tarefa um pouco trabalhosa se feita via C# puro: Ordenação de dados em GridView.
Para isso, utilizaremos o plugin TableSorter para Jquery que pode ser encontrado em http://tablesorter.com/docs/.
Para começar, adicione o seguinte código ao code-behind para que sejam incluídas na sua gridview as seções <thead> e <tbody> que serão utilizadas pelo TableSorter:
protected void GridView1_PreRender(object sender, EventArgs e)
{
//As 2 linhas abaixo só devem ser adicionadas se você não estiver utilizando ObjectDataSource, SqlDataSource ou LinqDataSource
GridView1.DataSource = "SEU DATASOURCE";
GridView1.DataBind();
if (GridView1.Rows.Count > 0)
{
//Substitui <td> por <th>
GridView1.UseAccessibleHeader = true;
//Adiciona <thead> e <tbody>
GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
}
}
Adicione as referências e o script abaixo em sua página ASPX e seu gridview estará com a ordenação funcionando:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="/script/tablesorter/jquery.tablesorter.js"></script>
<link rel="stylesheet" href="/script/tablesorter/themes/blue/style.css" type="text/css" id="" media="print, projection, screen" />
$(document).ready(function() {
$("#<%=GridView1.ClientID%>").tablesorter();
});
É possível a criação de widgets que fazem com que a ordenação selecionada seja persistida durante a sessão do usuário. Mais informações em: http://ybits.net/2009/10/making-jquery-tablesorter-persistent/
Um abraço e até a próxima!!
quinta-feira, 8 de novembro de 2012
Corrigindo erro de acesso ao Oracle - System.Data.OracleClient requires Oracle cliente software version 8.1.7 or greater
Fala, galera!!
Segue uma dica rápida e útil para quem utiliza banco de dados Oracle.
Ao tentar se conectar no Oracle utilizando o driver Sytem.Data.OracleClient pode ocorrer o seguinte erro:
"System.Data.OracleClient requires Oracle cliente software version 8.1.7 or greater"
A solução não é a atualização do Driver, como sugere a mensagem de erro, mas a troca do mesmo para o ODP.net (Oracle Data Provider for .Net)
A própria Microsoft sugere o uso do ODP.net.
O driver da Oracle pode ser baixado no endereço abaixo:
http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html
Segue link do site da Oracle sobre o ODP.net:
http://www.oracle.com/technetwork/topics/dotnet/index-085703.html
Comparativo entre o ODP.net e Microsoft.OracleClient:
http://www.oracle.com/technetwork/topics/dotnet/index-154765.html
OBS: Reinicie a máquina após a instalação do ODP.net.
Um abraço e até a próxima!!
Segue uma dica rápida e útil para quem utiliza banco de dados Oracle.
Ao tentar se conectar no Oracle utilizando o driver Sytem.Data.OracleClient pode ocorrer o seguinte erro:
"System.Data.OracleClient requires Oracle cliente software version 8.1.7 or greater"
A solução não é a atualização do Driver, como sugere a mensagem de erro, mas a troca do mesmo para o ODP.net (Oracle Data Provider for .Net)
A própria Microsoft sugere o uso do ODP.net.
O driver da Oracle pode ser baixado no endereço abaixo:
http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html
Segue link do site da Oracle sobre o ODP.net:
http://www.oracle.com/technetwork/topics/dotnet/index-085703.html
Comparativo entre o ODP.net e Microsoft.OracleClient:
http://www.oracle.com/technetwork/topics/dotnet/index-154765.html
OBS: Reinicie a máquina após a instalação do ODP.net.
Um abraço e até a próxima!!
quinta-feira, 1 de novembro de 2012
Gerando PDF a partir de uma URL
Fala, galera!!
Hoje vou postar um código de grande utilidade para quem precisa trabalhar com a geração de PDF.
Pesquisando na internet encontrei muitos componentes pagos e alguns gratuitos, mas que não funcionavam de forma tão simples. O simples, no meu caso, é criar um arquivo PDF a partir de uma URL.
Testei o iTextSharp que é um dos mais conhecidos, mas não funcionou da forma que eu esperava.
Eis que encontrei o wkhtmltopdf.
O componente pode ser baixado em: http://code.google.com/p/wkhtmltopdf/
Basicamente, é um arquivo exe que recebe como parâmetro a url que será convertida em pdf e o nome do arquivo pdf que será gerado.
O lado negativo é que ao usar um servidor compartilhado você pode ter problemas de permissão para executar o componente. Já fiz alguns testes em servidores compartilhados e não tive esse problema. Mas cada ambiente é um ambiente.
O componente não precisa ser instalado. O instalador apenas desempacota os arquivos para um diretório escolhido. Você pode simplesmente copiar esse diretório para o diretório de sua aplicação no servidor e executá-lo a partir da aplicação.
O código é bastante simples:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden; //Faz com que o processo seja executado em background
startInfo.FileName = "c:\diretorio\wkhtmltopdf.exe" ;
startInfo.Arguments = "http://www.suaurl.com/pagina. aspx + " " + "c:\diretorio\arquivo.pdf";
Process processo = Process.Start(startInfo);
processo.WaitForExit();
processo.Close();
processo.Dispose();
Um abraço e até a próxima!!
Hoje vou postar um código de grande utilidade para quem precisa trabalhar com a geração de PDF.
Pesquisando na internet encontrei muitos componentes pagos e alguns gratuitos, mas que não funcionavam de forma tão simples. O simples, no meu caso, é criar um arquivo PDF a partir de uma URL.
Testei o iTextSharp que é um dos mais conhecidos, mas não funcionou da forma que eu esperava.
Eis que encontrei o wkhtmltopdf.
O componente pode ser baixado em: http://code.google.com/p/wkhtmltopdf/
Basicamente, é um arquivo exe que recebe como parâmetro a url que será convertida em pdf e o nome do arquivo pdf que será gerado.
O lado negativo é que ao usar um servidor compartilhado você pode ter problemas de permissão para executar o componente. Já fiz alguns testes em servidores compartilhados e não tive esse problema. Mas cada ambiente é um ambiente.
O componente não precisa ser instalado. O instalador apenas desempacota os arquivos para um diretório escolhido. Você pode simplesmente copiar esse diretório para o diretório de sua aplicação no servidor e executá-lo a partir da aplicação.
O código é bastante simples:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden; //Faz com que o processo seja executado em background
startInfo.FileName = "c:\diretorio\wkhtmltopdf.exe"
startInfo.Arguments = "http://www.suaurl.com/pagina.
Process processo = Process.Start(startInfo);
processo.WaitForExit();
processo.Close();
processo.Dispose();
Um abraço e até a próxima!!
Assinar:
Postagens (Atom)