Web – Obtendo o valor de uma QueryString com JavaScript

Postado em 03/09/2010 17:09:12 por Tomás Vásquez

Mais uma tarefa comum em aplicações Web que acabamos por precisar fazer também no JavaScript.

Obter o valor de uma queryString é trivial em qualquer linguagem server side (ASP, ColdFusion, PHP, etc), mas no JavaScript, não.

Indo atrás de algumas funçôes (existem várias por aí), achei uma que atendeu muito bem:

function queryString(value) 
{
	path = window.location.search.substring(1);
	queryStringValues = path.split("&");
	for (i=0; i < queryStringValues.length; i++) 
	{
		queryStringValue = queryStringValues[i].split("=");
		if (queryStringValue[0] == value) 
		{
			return queryStringValue[1];
		}
	}
}
 
// exemplo de chamada
function getQueryStringTest()
{
	// obtém a queryString do email
	var email = queryString("email");
	if (email != null)
	{
		alert('Valor da queryString: ' + email);
	}
	else
	{
		alert('Ops! Não tem nada aqui');
	}
}

Junto segue uma função de teste para a chamada. Para ver funcionando, basta acessar a página que contém o script no seu navegador com a queryString com o valor do email. Segue abaixo um exemplo funcional:

Sem queryString

http://www.tomasvasquez.com.br/downloads/queryStringTest.htm

Com queryString

http://www.tomasvasquez.com.br/downloads/queryStringTest.htm?email=webmaster@tomasvasquez.com.br

Referências

http://ilovethecode.com/Javascript/Javascript-Tutorials-How_To-Easy/Get_Query_String_Using_Javascript.shtml

C# – Obtendo os valores de todas as propriedades de um objeto

Postado em 02/09/2010 15:09:32 por Tomás Vásquez

Tinha esquecido desse snippet. Com certeza ajuda, principalmente na depuração de aplicações.

Quando precisar saber os valores de todas as propriedades de um objeto, ao invés de sair destacando uma por uma, a rotina abaixo devolve os valores das propriedades de um determinado objeto, passado por parâmetro:

public static Dictionary<string, object> getPropertyValues(object o)
{
	Dictionary<string, object> propertyValues = new Dictionary<string, object>();
	Type ObjectType = o.GetType();
	System.Reflection.PropertyInfo[] properties = ObjectType.GetProperties();
	foreach (System.Reflection.PropertyInfo property in properties)
	{
		propertyValues.Add(property.Name, property.GetValue(o, null));
	}
	return propertyValues;
}

O código retorna um Dictionary, onde a string é o nome da propriedade e o object, seu valor. Inevitavelmente, é preciso o uso de Reflection para obter tais informações, o que provavelmente o leitor já esperava, certo? Daí para frente é só utilizar como bem entender.

Bom proveito.

C# – Referenciando tipos anônimos em controles DataBind

Postado em 02/09/2010 14:09:33 por Tomás Vásquez

Novas funcionalidades são sempre bem vindas, mas as novidades sempre trazem mais novidades, situações, problemas, enfim, o trivial.

Os tipos anônimos do C# 3.0 economizam um bocado de tempo quando se precisa extrair algo de uma lista baseada em uma query LINQ. Vou dar um exemplo para elucidar a situação. Quando você extrai de uma determinada lista apenas alguns campos, por exemplo, do objeto:

public class Pessoa
{
	public string Nome { get; set; }
	public string SobreNome{ get; set; }
	public string Curso { get; set; }
	public string Escola { get; set; }
}

E queremos tirar uma lista única de Curso/Escola. Fácil, é só usar o Distinct, gerando algo como:

(from p in PessoaList
select new { p.Curso, p.Escola }).Distinct();

Mais fácil ainda se atribuir o resultado do código acima direto ao DataSource de um Repeater ou GridView. Mas, como fazer para coletar os valores e fazer o bind e um tipo que não existe, por exemplo, no evento ItemDataBound ou RowDataBound? Se você ativar o Watcher sobre o e.Item.DataItem, você verá um tipo anônimo referenciado de uma forma um pouco estranho. Se tentar usar no código, não funciona.

Como resolver? Não tem jeito: Reflection!

Se você tiver certeza de que a propriedade existe, dá para fazer uma referência direta:

e.Item.GetType().GetProperty("Escola").GetValue(e.Item, null)

Se houver dúvida quanto a existência, algumas verificações precisarão ser feitas. Deixo abaixo do código do colega leppie do StackOverFlow que faz tais verificações:

object o = e.Row.DataItem;
Type t = o.GetType();
PropertyInfo pi = t.GetProperty("StringProperty");
if (pi != null && pi.PropertyType == typeof(string))
{
  // the property exists!
  string s = pi.GetValue(o, null) as string;
  // we have the value
  // insert your code here
  // PROFIT!  :)
}

Bom proveito!

Referências:

http://stackoverflow.com/questions/607433/net-databinding-referencing-anonymous-type-properties

Excel – Modelo de Controle Bancário em VBA

Postado em 27/08/2010 15:08:13 por Tomás Vásquez


Mais uma jóia do nossa fórum, que tem dado muitos bons frutos de exemplos de código e planilhas! O autor da proeza é o nosso colega, já conhecido aqui no blog, Felipe Dasi.

Palavras do próprio:

Disponibilizo para o fórum, um controle bancário que fiz em excel com banco de dados externo (acess) – a dupla entrosada :) . Acho que é uma ferramenta boa que pode ser aprimorada e serve como ponto de partida para esse tipo de controle financeiro. O banco de dados é criado automaticamente ao clique da imagem “pastinha”, tambem acompanha um pequeno tutorial, na propria planilha. Abraços.

Só um comentário. O pequeno tutorial mencionado é na verdade um mega tutorial, com um detalhamento voraz do que faz a planilha em termos de funcionamento e código. Vou economizar espaço aqui e deixar que a documentação fale por si. Abaixo segue o visual do aplicativo:

Excelente para auxiliar nas tarefas de controle bancário e também como um exemplo de código em VBA. O tópico do fórum que trata desta planilha é:

http://www.tomasvasquez.com.br/forum/viewtopic.php?f=6&t=422&start=0

Download planilha

http://www.tomasvasquez.com.br/downloads/controle_bancario_felipe_dasi.zip

Bom proveito a todos!


Página 1 de 10612345102030...Última »