Categorias: linguagens, c#, java, php
31.03.09
 05:32:00, por mrxrsd  1277 visualizações
Categorias: dotnet, c#
Não irei entrar no mérito sobre o que é o viewstate, mas dependendo do número de webcontrols que temos em nossa página ele se torna absurdamente grande, uma maneira de contornar isso é salvando ele na sessao.
Iremos criar um atributo no webconfig, caso ele esteja ativado ele salvará o viewstate na sessão.
C#: | protected override object LoadPageStateFromPersistenceMedium()
| | {
| |
| | object objViewState;
| |
| | if (ConfigurationManager.AppSettings["ServerSideViewState"] != null &&
| | ConfigurationManager.AppSettings["ServerSideViewState"].ToUpper().Equals("TRUE"))
| | {
| | objViewState = Context.Session["VIEWSTATE"];
| |
| | if (objViewState == null)
| | {
| | return;
| | // Sessao expirada
| | }
| |
| | return objViewState;
| |
| | }
| | else
| | {
| |
| | return base.LoadPageStateFromPersistenceMedium();
| | }
| |
| | }
| |
| | protected override void SavePageStateToPersistenceMedium(object state)
| | {
| |
| |
| | if (ConfigurationManager.AppSettings["ServerSideViewState"] != null &&
| | ConfigurationManager.AppSettings["ServerSideViewState"].ToUpper().Equals("TRUE"))
| | {
| | Context.Session["VIEWSTATE"] = state;
| | }
| | else
| | {
| |
| | base.SavePageStateToPersistenceMedium(state);
| | }
| |
| | } |
02.03.09
 04:17:00, por mrxrsd  695 visualizações
Categorias: dotnet, c#
Acredito que quase todo mundo já precisou fazer uma validação de domínio alguma vez e boa parte das vezes, a primeira idéia que vem é utilizar um enum, porém algumas pessoas esbarram em uma dificuldade que é não poder ter um "enum de strings", ou seja, setar um texto decente para exibição.
Leia mais »
03.02.09
 02:41:22, por mrxrsd  188 visualizações
Categorias: dotnet, c#
Action Delegate
Os Action delegate encapsulam métodos que não possuem nenhum retorno e aceitam zero ou até quatro paramêtros. A sua assinatura é encontrada no System namespace.
C#: | using System;
| | using System.Collections.Generic;
| | using System.Linq;
| | using System.Text;
| |
| | namespace ConsoleApplication1
| | {
| | class Program
| | {
| |
| | public class Pessoa
| | {
| | private string _nome;
| |
| | public string nome
| | {
| | get { return _nome; }
| | set { _nome = value; }
| | }
| |
| | private int _idade;
| |
| | public int idade
| | {
| | get { return _idade; }
| | set { _idade = value; }
| | }
| |
| | bool _marcado;
| |
| | public bool marcado
| | {
| | get { return _marcado; }
| | set { _marcado = value; }
| | }
| | }
| |
| | static void Main(string[] args)
| | {
| |
| | // Declarando um simples delegate
| | Action<Pessoa> action = EscrevaNome;
| |
| | // Criando nossa lista de pessoas
| | List<Pessoa> vetPessoa = new List<Pessoa>{
| | new Pessoa{ nome="Pessoa 1", idade=15},
| | new Pessoa{ nome="Pessoa 2", idade=18},
| | new Pessoa{ nome="Pessoa 3", idade=24},
| | new Pessoa{ nome="Pessoa 4", idade=10},
| | new Pessoa{ nome="Pessoa 5", idade=13}
| | };
| |
| | // Chamando nosso delegate
| | vetPessoa.ForEach(action);
| |
| |
| | // Vamos supor que gostariamos marcar todas as pessoas que tem mais de 15 anos
| | vetPessoa.FindAll(p => p.idade > 15).ForEach(p => p.marcado = true);
| |
| | // Primeiro utilizamos o método FindAll que aceita um Predicate para fazer o filtro
| | // e depois, usamos o ForEach que aceita uma action para realizar o trabalho
| |
| |
| | }
| |
| | public static void EscrevaNome(Pessoa p)
| | {
| | Console.WriteLine(p.nome);
| | }
| | }
| |
| |
| | } |
29.10.08
A devExpress lançou uma versão free do seu famoso Add-in CodeRush, o CodeRush Xpress ou apenas CodeRushX. Faça o download no próprio site do devexpress, apenas para Visual Studio 2008.
Download: clique aqui
25.10.08
 20:43:39, por mrxrsd  2130 visualizações
Categorias: dotnet, c#
XPath é uma linguagem para buscar informação em um arquivo XML. O XPath é usado para navegar através dos atributos e elementos.
Primeiro, vamos conhecer um pouco a estrutura de um arquivo XML.
XML: | <?xml version="1.0" encoding="ISO-8859-1"?>
| | <sala>
| | <aluno>
| | <nome nacionalidade="br">Igor Ferraz</nome>
| | <idade>19</idade>
| | <idioma>inglês</idioma>
| | </aluno>
| | </sala> |
- sala => document node
- idade => element node
- nacionalidade="br" => attribute node
Parent (Pai)
Cada elemento e atributo possui seu pai, no caso o elemento aluno é pai de nome, idade e idioma.
Children (Filho)
Os element nodes podem ter nenhum ou muitos filhos.
Siblings (Irmãos)
São nós que possuem o mesmo pai.
O XPath utiliza as chamadas "path expressions", expressões de caminho, para selecionar os nós no arquivo XML. As mais usadas são:
| Expressão |
Decrição |
| nome_do_nó |
Seleciona todos os filhos do nó solicitado |
| / |
Seleciona todos desde do nó raiz |
| // |
Seleciona os nós no documento que aceitam a expressão não importando aonde ele esteja |
| . |
Seleciona o nó corrente |
| .. |
Seleciona o pai do nó |
| @ |
Seleciona os atributos |
Exemplos
- sala => Seleciona todos os nós filhos do elemento sala.
- /sala => Seleciona o elemento raiz sala.
- sala/aluno => Seleciona todos elementos aluno que são filhos de sala.
- //aluno => Seleciona todos os aluno, não importa de quem seja filho.
- //@nacionalidade => Seleciona todos os atributos nacionalidade.
Predicados
São usados para buscar um nó especifico ou um nó que possui um determinado valor.
- /sala/aluno[1] => Seleciona o primeiro elemento aluno que é filho de sala.
- /sala/aluno[last()] => Seleciona o último elemento aluno que é filho de sala.
- /sala/aluno[position()<5] => Seleciona os quatros primeiros elementos aluno que é filho de sala.
- //aluno[@nacionalidade='en'] => Seleciona todos os elementos alunos não importa de quem seja filho porém que tenha o atributo nacionalidade = 'en'.
- /sala/aluno[idade>18] => Seleciona todos os elementos alunos que são filho de sala e possuem idade maior que 18 anos.
- /sala/aluno[idade>18]/nome => Seleciona todos os nomes dos alunos que são filho de sala e possuem idade maior que 18 anos.
Além disso, podemos usar wildcards, como é o caso do operador * e também podemos selecionar mais de um "caminho" através do operador |.
- /sala/* => Seleciona todos os filhos do elemento sala.
- //aluno/nome | //aluno/idade => Seleciona todos os nomes e idades de todos elementos aluno.
Lendo um arquivo XML utilizando C#
Primeiro vamos instanciar um objeto do tipo XmlDocument que vai ser o responsável por abrir
o arquivo XML e depois através do método Load, iremos indicar o caminho de um arquivo.
C#: | XmlDocument xDoc = new XmlDocument();
| | xDoc.Load("colegio.xml"); |
O métodos SelectNodes aceita uma expressão XPath e retorna uma coleção de nós.
C#: | XmlNodeList alunos = xDoc.SelectNodes("/sala/aluno"); |
Para exibir o nome de todos os alunos:
C#: | foreach (XmlNode a in alunos)
| | {
| | Console.WriteLine(a.SelectSingleNode("nome").InnerText);
| | } |
24.10.08
 11:33:25, por mrxrsd  487 visualizações
Categorias: dotnet, c#
Existem várias formas de se iterar, ou caminhar, por uma coleção. Irei mostrar diversas maneiras de iterar em uma coleção utilizando C#. Vamos imaginar que já existe uma classe chamada produto onde temos duas propriedades: nome e valor.
Leia mais »
21.10.08
 11:18:35, por mrxrsd  1509 visualizações
Categorias: php, ajax, zend
Irei mostrar uma abordagem de validação de formulário em AJAX utilizando o Zend Framework. Iremos fazer uso da própria classe de validação do Zend, o Zend_Validate. Você deve estar se perguntando qual é a vantagem de fazer a validação via ajax.
Sinceramente? Com o uso do Zend_Form, é quase nula, pois ele faz o controle dos dados para você, mas quem não se habituou com o uso do Zend_Form, fazer o controle dos dados após o post quando dá erro de validação é realmente entediante, nessa hora que entra o ajax.
Leia mais »
15.10.08
 11:58:04, por mrxrsd  4286 visualizações
Categorias: php, zend
Irei mostrar como fazer o controle de acesso através do esquema de plugin do zend framework e utilizando as classes zend_auth e zend_acl. No nosso exemplo teremos três tipos de usuários: guest, normal e admin.
Leia mais »
14.10.08
 13:03:24, por mrxrsd  117 visualizações
Categorias: php
Fiz um widget para mostrar os posts mais acessados, você pode ver no menu ao lado o Hot Topics quem quiser poderá fazer o download.
Post no fórum do b2: clique aqui
Download do arquivo: clique aqui
|
|