RSS

Arquivo da tag: ASP.NET

HTML – Forçar a abertura de links em uma nova janela

Método interessante publicado pelo Pedro Araújo:

O processo é muito simples. Criamos um JavaScript que lista todos os links da página e dentro de um for modificamos o target deles. No exemplo mudei pra “_blank”, mas você pode escolher o que for mais conveniente. Independente de como o link tenha sido criado e qual target tenha sido definido pra ele no código html, será mudado pro que for definido no script. Pra executar o script é só chama-lo no evento onload do body.

<html>
<head>
<title>Abrir todos os links como blank</title>
<script language=”JavaScript”>
function AbrirTodosOsLinksComoBlank()
{
for (i = 0; i < document.links.length; i++)
{
document.links[i].target = “_blank”;
}
}
</script>
</head>
<body onload=”JavaScript:AbrirTodosOsLinksComoBlank();”>
<a href=”
http://pedro-araujo.com/” target=”_parent”>Link 1</a>
<a href=”
http://www.vivaolinux.com.br/”>Link 2</a>
<a href=”
http://www.ubuntu-br.org/” target=”_blank”>Link 3</a>
<a href=”#”>Link 4</a>
<a href=”
http://www.google.com.br/” target=”_self”>Link 5</a>
</body>
</html>

 
2 Comments

Publicado por em 28/02/2010 em ASP.NET, JavaScript, Tecnologia

 

Tags: ,

FileUpload com AJAX

Esse é um problema comum, o objeto FileUpload precisa de um ciclo completo de postback para receber um upload. Já o AJAX veio justamente para suprimir esses postbacks.
Então, quando temos um asp:FileUpload dentro de um asp:UpdatePanel, esses postbacks não ocorrem e quando consultamos a propriedade HasFile do FileUpload não recebemos nada.
No entanto, podemos contornar isso facilemente através de triggers do UpdatePanel.

<asp:UpdatePanel runat=”server” UpdateMode=”Conditional” >
<ContentTemplate>
<asp:FileUpload runat=”server” />
<asp:Button runat=”server” ID=”MeuBotao” />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID=”MeuBotao” />
</Triggers>
</asp:UpdatePanel>

No exemplo acima, definimos que o botão que faz o submit deve acionar o postback, e isso faz a mágica.

 
2 Comments

Publicado por em 25/07/2009 em ASP.NET, Tecnologia

 

Tags: ,

[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.

Já me ocorreu algumas vezes de, ao tentar estabelecer uma conexão contra a base de dados, receber esse retorno. Eu checo e re-checo a connection string e tudo parece estar correto. No Firewall a porta 1433 está devidamente liberada. Nas configurações do SQL Server, os protocolos para a rede, habilitados. Tudo certinho.

Hoje me ocorreu um caso ainda mais inusitado. Criei duas conexões contra a mesma base SQL Server 2005. Uma usando o provedor SqlClient e a outra usando o OleDb. Mesmo usuário, mesmo senha, mesmo tudo. A que usava o SqlClient foi, a OleDb não. Fiquei cabrero.

Depois de um pouco apanhar, resolvi tentar o DNS ou IP para me referenciar ao servidor. Já que a conexão estava sendo feita para um SQL Server instalado na própria máquina, havia tomado a liberdade de usar a constante (local) como nome de servidor.

Buzz’s Eye… Na mosca… Foi só usar o DNS (ou IP) da máquina no lugar de usar a constante que o OleDb se localizou.

Buzz’s Eye

 
2 Comments

Publicado por em 08/07/2009 em ASP.NET, SqlServer, Tecnologia

 

Tags: , ,

The Controls Collection Cannot be Modified Because the Control Contains Code Blocks

Usando MasterPages no AspNet voce pode cair nesse problema ao usar CodeBlocks no Header. Vejamos o seguinte cenário:

<head runat=”server” >
<title>webCash</title>
<link rel=”stylesheet” type=”text/css” href=”/App_Themes/Default/Master.css” />
<link rel=”shortcut icon” href=”/favicon.ico”/>
</head>

Ficamos limitados quanto ao local onde se encontrará o favicon dependendo de como a aplicação fora hospedada. O que queremos é que o ícone seja lido da raiz da aplicação indiferente de como foi feita a hospedagem. Normalmente resolveríamos isso com Code Blocks, como abaixo:

<head runat=”server” >
<title>webCash</title>
<link rel=”stylesheet” type=”text/css” href=”/App_Themes/Default/Master.css” />
<link rel=”shortcut icon” href=”<%= ResolveUrl(“~/favicon.ico”)%> “/>
</head>

Porém essa sintaxe causa o erro citado no título desse post. O que podemos fazer ? Utilizar DataBind no lugar dos Code Blocks. No Head, a sintaxe é quase igual, mudando apenas o sinal = para #, como abaixo:

<head runat=”server” >
<title>webCash</title>
<link rel=”stylesheet” type=”text/css” href=”/App_Themes/Default/Master.css” />
<link rel=”shortcut icon” href=”<%# ResolveUrl(“~/favicon.ico”)%> “/>
</head>

E, no Page_Load do MasterPage, dispararemos o devido bind:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If Not Me.IsPostBack Then
Page.Header.DataBind()
End If
End Sub

Em linhas gerais, é isso.
Agarceço ao seguinte post por essa ideia:

 
1 Comment

Publicado por em 07/05/2009 em ASP.NET, Tecnologia

 

Tags:

Async em AspNet com AJAX

Hoje duelei por um tempo com as chamadas assíncronas numa página ASP e por isso, vou postar aqui a solução para poder me lembrar caso precise.

Quadro muito comum: Criei uma classe que era instanciada e tinha um método chamado. Após isso, internamente, os processos eram executados em diversas threads para agilizar e, ao concluir tudo, um evento disparado. Se fosse windows application seria “mamão com açucar”, mas numa web aplication… temos o fator timeout da mesma.

A primeira coisa a se fazer é acrescentar na declaração da página a propriedade Async, isso definirá que a mesma pode tratar as chamadas assíncronas. Quanto ao timeout, o default é 90 segundos… se voce, como eu, tiver um processo realmente demorado e precisar aumentar isso, fazemos através da propriedade AsyncTimeout, lembrando que a unidade é segundos.

<%@ Page Async=”true” AsyncTimeout=”300″ %>

Mas isso não basta, se sua aplicação usar AJAX… Nesse caso entra o fator ScriptManager que também possui uma propriedade para indicar o timeout.

<asp:ScriptManager runat=”server” AsyncPostBackTimeout=”300″ />

E agora vai que é uma beleza.

 
Leave a comment

Publicado por em 15/12/2008 em ASP.NET, Tecnologia

 

Tags: ,

AutoCompleteExtender não dispara eventos, não responde

Pela segunda vez ao começar um novo projeto AspNet usando o extender AutoCompleteExtender para auto-sugerir valores num dropdown conforme se digita num textbox, eu tenho dificuldades em fazer o recurso funcionar.

Faço todas as chamadas, crio o webService, testo o webService, tudo OK mas,.. simplesmente na página ao digitar nada é sugerido.

Após apanhar muiiiiito, comparando minhas outras aplicações (onde o recurso está funcionando) com a nova, identifiquei sutis diferenças nas declarações dos webMethods e dos webServices e… sim eram esses os problemas. Para que eu não volte a esquecer, vou documentar aqui

Declaração do webService:

<WebService(Namespace:=“http://tempuri.org/”)> _
<WebServiceBinding(ConformsTo:
=WsiProfiles.BasicProfile1_1)> _
<
Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
<Script.Services.ScriptService()> _
Public Class AutoComplete
Inherits System.Web.Services.WebService

Declaração do webMethod (declaração é totalmente case-sensitive):

<WebMethod()> _
<Script.Services.ScriptMethod()> _
Public Function GetTerceiros( _
ByVal prefixText As String, _
ByVal
count As Integer) As String()

Chamada no AspX:

<ajaxToolkit:AutoCompleteExtender
ID
=”TerceiroAutoComplete” runat=”server”
TargetControlID
=”TerceiroTextbox”
ServicePath
=”~/Common/AutoComplete.asmx”
ServiceMethod
=”GetTerceiros”
MinimumPrefixLength
=”1″
CompletionInterval
=”1000″
CompletionSetCount
=”20″
EnableCaching
=”true”
Enabled
=”true”
/>

Ah sim, mais uma coisa, no AspX os objetos devem estar dentro de um UpdatePanel, naturalmente.

AJAX: AutoCompleteExtender not firing, not responding
 
Leave a comment

Publicado por em 07/11/2008 em ASP.NET, Tecnologia

 

Tags: ,

 
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.