Fala galera,
Quem já precisou criar uma cópia de um diretório já deve ter notado que a função Copy que existe na classe System.IO.File não está presente na classe System.IO.Directory.
Segue então um código para quem precisa fazer cópia de um diretório e toda sua estrutura (arquivos e subdiretórios):
public void copyFolder(string oldFolder, string newFolder)
{
if (!Directory.Exists(newFolder))
Directory.CreateDirectory(newFolder);
string[] files = Directory.GetFiles(oldFolder);
foreach (string file in files)
{
string name = Path.GetFileName(file);
string dest = Path.Combine(newFolder, name);
File.Copy(file, dest);
}
string[] folders = Directory.GetDirectories(oldFolder);
foreach (string folder in folders)
{
string name = Path.GetFileName(folder);
string dest = Path.Combine(newFolder, name);
copyFolder(folder, dest);
}
}
Um abraço e até a próxima!!
quinta-feira, 5 de junho de 2014
quarta-feira, 12 de fevereiro de 2014
Executando métodos em novas Threads com passagem de parâmetros
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!!
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!!
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!!
Assinar:
Postagens (Atom)