Este é um POST um tanto simples, mas não tão trivial para os programadores.
Melhor dizendo e se você recebe um objeto o qual você não sabe o tipo? Ou se você estiver consumindo um serviço (WebService, WCF, etc…), mas e tiver em sua especificação que o tipo do objeto pode ser mudado? Pois bem, segue uma boa referência.
if(objeto.GetType() == typeof(String))
{
//Verifique se a variável é do tipo string e faça….
}
Se você tiver uma abstração você pode também utilizar esse mesmo conceito para verificar se DBNull exemplo…
if(objeto.GetType() == typeof(System.DBNull))
{
//Verifique se a variável é do tipo string e faça….
}
Para quem quer tratar de abstração de banco recomendo também uma leitura sobre PropertyInfo
Essa semana tive que exportar os dados de uma GridView para uma planilha Excel, bom… sabia que não era algo muito complicado, mas também nunca tinha feito, sendo assim realizei uma busca no grande mestre Google e encontrei uma classe que me atendeu muito bem. Fácil e descomplicado.
using
using System;
using System.Data;
using System.Configuration;
using System.IO;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace SGM.CTA.Web.UI
{
publicclassGridViewExportUtil
{
///<summary>
/// Realiza a exportao de grid para Excell
///</summary>
///<param name=”fileName”>Nome do Arquivo</param>
///<param name=”gv”>GridView preenchida com os dados necessrios</param>
publicstaticvoid Export(string fileName, GridView gv)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader(
“content-disposition”, string.Format(“attachment; filename={0}”, fileName));
HttpContext.Current.Response.ContentType =
“application/ms-excel”;
using (StringWriter sw = newStringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
// Create a form to contain the grid
Table table =
new Table();
// add the header row to the table
if (gv.HeaderRow != null)
{
//adiciona a cor
gv.HeaderRow.BackColor = System.Drawing.Color.AliceBlue;
//Prepara informao header
GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
table.Rows.Add(gv.HeaderRow);
}
// add each of the data rows to the table
foreach (GridViewRow row in gv.Rows)
{
GridViewExportUtil.PrepareControlForExport(row);
table.Rows.Add(row);
}
// add the footer row to the table
if (gv.FooterRow != null)
{
GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
table.Rows.Add(gv.FooterRow);
}
// render the table into the htmlwriter
table.RenderControl(htw);
// render the htmlwriter into the response
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
}
}
}
///<summary>
/// Replace any of the contained controls with literals
///</summary>
///<param name=”control”></param>
privatestaticvoid PrepareControlForExport(Control control)
{
for (int i = 0; i < control.Controls.Count; i++)
{
Control current = control.Controls[i];
if (current is LinkButton)
{
control.Controls.Remove(current);
control.Controls.AddAt(i,
new LiteralControl((current as LinkButton).Text));
}
elseif (current is ImageButton)
{
control.Controls.Remove(current);
control.Controls.AddAt(i,
new LiteralControl((current as ImageButton).AlternateText));
}
elseif (current is HyperLink)
{
control.Controls.Remove(current);
control.Controls.AddAt(i,
new LiteralControl((current as HyperLink).Text));
}
elseif (current is DropDownList)
{
control.Controls.Remove(current);
control.Controls.AddAt(i,
new LiteralControl((current as DropDownList).SelectedItem.Text));
}
elseif (current is CheckBox)
{
control.Controls.Remove(current);
control.Controls.AddAt(i,
new LiteralControl((current as CheckBox).Checked ? “True” : “False”));
}
if (current.HasControls())
{
GridViewExportUtil.PrepareControlForExport(current);
}
}
}
}
}
Para utilizar no seu evento do botão você pode adicionar
GridViewExportUtil.Export(“Usuarios.xls”, this.nome_da_gridview);
Dúvidas, entrem em contato
PS: Dificil postar um código aqui no WordPress, ficou um tanto confuso, mas nada dificil de entender!
À partir do Firefox 4 o navegador da Mozilla deixou de exibir uma função interessante que era usada por alguns usuários: quando tentávamos fechar várias abas de uma vez o navegador exibia a possibilidade de “Salvar e Sair”.
Felizmente o salvamento de abas no Firefox não foi removido, apenas desativado por padrão. Para “devolver” tal função ao navegador digite na barra de endereços about:config e dê ENTER.
Clique em “Serei cuidadoso, prometo!” e em localizar digite browser.showQuitWarning
Clique com o botão direito do mouse sobre o arquivo encontrado, selecione “Inverter valor” e pronto.
Logo após fechar a página de configuração a modificação já entra em vigor.
Necessário download do JQuery no link http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.2.6.js&can=2&q=
<html>
<head>
<title>WebService CEP</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- Insere o jquery -->
<script type="text/javascript" src="jquery-1.2.6.js"></script>
<script type="text/javascript" >
$(document).ready(function(){
//Preenche os campos na ação "Blur" (mudar de campo)
$("#cep").blur(function(){
$("#rua").val("...")
$("#bairro").val("...")
$("#cidade").val("...")
$("#uf").val("...")
// seta a variavel requisitada no campo cep
consulta = $("#cep").val()
//Realiza a consulta
/*Realiza a consulta através do toolsweb passando o cep como parametro
e informando que vamos consultar no tipo javascript
*/
$.getScript("http://www.toolsweb.com.br/webservice/clienteWebService.php?cep="+consulta+"&formato=javascript", function(){
//unescape - Decodifica uma string codificada com o método escape.
rua=unescape(resultadoCEP.logradouro)
bairro=unescape(resultadoCEP.bairro)
cidade=unescape(resultadoCEP.cidade)
uf=unescape(resultadoCEP.uf)
// preenche os campos
$("#rua").val(rua)
$("#bairro").val(bairro)
$("#cidade").val(cidade)
$("#uf").val(uf)
});
});
});
</script>
</head>
<body>
<form id="form1" name="form1" method="get" action="">
<table width="100%" border="0">
<tr>
<td>CEP:</td>
<td><input name="cep" type="text" id="cep" value="" size="15" maxlength="8" /></td>
</tr>
<tr>
<td>RUA:</td>
<td><input name="rua" type="text" id="rua" size="60" /></td>
</tr>
<tr>
<td>BAIRRO:</td>
<td><input name="bairro" type="text" id="bairro" size="60" /></td>
</tr>
<tr>
<td>CIDADE:</td>
<td><input name="cidade" type="text" id="cidade" size="60" /></td>
</tr>
<tr>
<td>ESTADO:</td>
<td><input name="uf" type="text" id="uf" size="2" /></td>
</tr>
</table>
</form>
</body>
</html>
Olá Pessoal,
Essa semana passei por uma situação um tanto interessante.
Tive que criar uma consulta em um banco de dados MySQL para ser disponibilizada a um cliente. O problema é que nessa consulta dos dados vinham com caracteres especiais do tipo á ficaria Â$, ou seja, encontrei um problema.
Assim como em nossas linguagens de programação nosso banco de dados MySQL também tem a função de replace e pode ser utilizada da seguinte maneira:
REPLACE(“coluna-da-tabela”, “valor-a-ser-alterado”, “valor-novo”)
Ex: REPLACE(“USUARIO”, “AntÓ&nio”, “Antônio”);
Fácil não? Vale a notação dessa funcionalidade, pois certamente precisaremos dela um dia, mesmo que seja para dar um UPDATE em minha tabela toda para corrigir um caracter inserido de forma indevida.
Até a próxima.
Na tentativa de excluir um usuário de um SCHEMA do SQL Server podemos nos deparar com a seguinte mensagem “Drop User: The database principal owns a schema in the database, and cannot be dropped”.
Para resolver este problema devemos utilizar o ALTER AUTHORIZATION, movendo o usuário do banco para um outro usuário.
ALTER AUTHORIZATION ON SCHEMA::db_owner TO db_owner
Podemos alterar para qualquer um outro usuário utilizando o seguinte comando
ALTER AUTHORIZATION ON SCHEMA::<theSchema> TO userName
Essa é uma forma rápida e eficaz de resolver um problema que as vezes quebramos a cabeça durante horas.
A instalação do SAMBA no Debian e Ubuntum utilizaremos o seguinte comando:
# apt-get install samba smbclient swat samba-doc
Para instalarmos o SAMBA no CentOS e Fedora utilizaremos
# yum install samba samba-client samba-doc samba-swat
Com os pacotes instalados, use os comandos:
# /etc/init.d/samba start# /etc/init.d/samba stop
No Fedora, CentOS e no Mandriva, os comandos para iniciar e parar o serviço são:
# service smb start# service smb stop
Aqui vai uma dica de como ajustar a data e a hora no Linux independente da Distro:
date mmddhhmmccaa
Onde:
- mm = Mês
- dd = Dia
- hh = Hora
- mm = Minutos
- cc = Primeiras casas do Ano (2001 = 20)
- aa = Últimas duas casa do Ano (2001 = 01)
Exemplo:
# date 021122562012
Uma breve observação, para registrar esta data na BIOS necessário realizar o comando clock -w
Dessa maneira ao reiniciar a máquina garantiremos que o horário continuará correto.
Prezados Leitores,
Venho por via deste informar a perda de todo nosso banco de dados.
Na atualização de nosso blog, o banco de dados foi corrompido e por uma falha nossa, não fizemos o backup do banco de dados conforme recomendado pelo WordPress.
Vamos tentar resgatar vários dos posts anteriores para minimizar o impacto.
Agradecemos a todos e contamos com a colaboração dos nossos leitores.
Att,
Everton Gonçalves

Comentários