Perguntas Mais Freqüentes de ASP.NET

Perguntas Mais Freqüentes de ASP.NET


JavaScript
    Como exibir data e hora do cliente?
    Como acessar um controle utilizando Javascript?
    Como chamar uma função do lado do servidor com Javascript?
    Como passar um valor para um campo oculto utilizando javascript em ASP.Net?
    Como registrar uma função Javascript no Code-behind?
    Como exibir imagens com um atraso de 5 segundos?
    Como capturar as configurações do Browser e aplicar controles de página?
    Como apagar a sessão quando o usuário fechar a janela?


Métodos de passar dados entre páginas
    Como utilizar cookies?
    Como utilizar QueryString?
    Como utilizar Session?
    Como utilizar Use Context?
    Como utilizar PreviousPage?
    Como utilizar Submit Form?
    Como utilizar Server.Transfer?


Upload de Arquivo
    Como fazer upload de um arquivo?
    Como capturar o tipo de dado do arquivo carregado?
    Como capturar o tamanho do arquivo carregado?
    Porque ocorre falha ao fazer o upload de arquivos grandes quando utilizado o controle ASP.NET FileUpload?
    Como fazer upload de imagens somente?
    Como fazer com que o contole File Upload funcione com um UpdatePanel?


Calendar
    Como mudar as definições de do controle Calendar?
    Como selecionar vários datas não sequencias no Code-behind?
    Como desabilitar algumas datas no controle Calendar?
    Como estender o controle Calendar para validação do lado do servidor?
    Como definir ToolTips e links no evento DayRender do controle Calendar?
    Como definir diferentes aparências para datas?


List Controls
    Como habilitar um ASP.NET DropDownList com suporte a OptionGroup?
    Como desabilitar um item no DropDownList?
    Como manter selecionado um valor em um DropDowlist?


User control
    Como adicionar uma nova propriedade em um UserControl?
    Como acessar UserControl  criados dinamicamente?
    Como acessar o controle dentro de um UserControl?


Controles dinâmicos
    Como criar um controle dinâmico?
    Como acessar o valor inserido por um usuário em um controle criado dinamicamente?
    Como acessar o controle dinâmico através do Javascript?
    Como manter todos os controles adicionados dinamicamente após um post back?
    Porque controles dinâmicos desaparecem após um post back?


Estilo
    Como adicionar estilo através do Code-behind?
    Como adicionar estilo através de javascript?
    Como remover espaço?
    Como adicionar estilo através do html?
    Como definir uma imagem como plano de fundo de um botão?
    Como colorir itens em um ListBox?


Impressão
    Como imprimir parte de uma página  web através de CSS?
    Como imprimir parte de uma página web através de javascript (1)?
    Como imprimir parte de uma página web através de javascript (2)?


Mail
    Quais classes são necessárias para enviar email no ASP.Net?
    Como enviar emails utilizando System.Net.Mail ?
    Como configurar um servidor SMTP?
    Como enviar um email para servidor Gmail?


GridView
    Como editar de dados de um Gridview com DropDownlist?
    Como exportar dados do Gridview para Excel?
    Como alterar as propriedades de um TextBox do GridView?
    Como atualizar campo do GridView com a data atual?


Configuração
    Onde armazenar informações de configuração de uma aplicação?

 


JavaScript

Como exibir data e hora do cliente?
 Você pode usar uma função Javascript para exibir data e hora.


 <script type="text/javascript">
 function displayTime()
 {
     var localTime = new Date();
     var year= localTime.getYear();
     var month= localTime.getMonth() +1;
     var date = localTime.getDate();
     var hours = localTime.getHours();
     var minutes = localTime.getMinutes();
     var seconds = localTime.getSeconds();   
     var div = document.getElementById("div1");
     div.innerText = year+"-"+month+"-"+date+" "+hours+":"+minutes+":"+seconds;
 }
 </script>


 Então você chama a função na página.


 <body onload="displayTime();">
     <div id="div1">
     </div>
 </body>


 Posts Relacionados:
 http://forums.asp.net/p/1247758/2303034.aspx


Como acessar um controle utilizando Javascript?
 Referencie a propriedade ClientID (ou UniqueID) do controle no Javascript.


Code-behind:
 protected void Page_Load(object sender, EventArgs e)
 {
     Button btn = new Button();
     btn.ID = "Button1";
     btn.Attributes.Add("runat", "server");
     btn.Attributes.Add("onclick", "pop('" + btn.ClientID + "')");
     btn.Text = "Teste";
     this.form1.Controls.Add(btn);
 }

 .Aspx:
 <script type="text/javascript">
     function pop(InputBoxID)
     {
         var InputControl = document.getElementById(InputBoxID);
         alert(InputControl.value);
     }
 </script>

 

 Ou
 Use o seguinte método:


 Code-behind:
 btn.Attributes.Add("onclick", "pop(this)");

 .Aspx:
 <script type="text/javascript">
     function pop(InputBox)
     {
         alert(InputBox.value);
     }
 </script>


 Posts Relacionados:
 http://forums.asp.net/p/1239593/2260331.aspx#2260331
  
  
Como chamar uma função do lado do servidor com Javascript?

 Primeiramente, você pode criar um botão e  adicionar o código no evento button_click.
 Você também pode utilizar o seguinte código para chamar a função utilizando
 document.getElementById("btn1").click();


 Posts Relacionados:
 http://forums.asp.net/p/1242420/2274228.aspx


Como retornar variáveis do lado do servidor através de Javascript?


 .Aspx
 <asp:HiddenField ID="HiddenField1" runat="server" />

 Code-behind:
 private string str = "teste";

 protected void Page_Load(object sender, EventArgs e)
 {
     HiddenField1.Value = str;
 }

 

 Então você pode acessar o controle HiddenField1 utilizando Javascript


 .Aspx:
 <script type="text/JavaScript">
 Var tt = document.getElementByID(“HiddenField1”);
 alert(tt.value);
 </script>

 

 Declare a variável como public no servidor:


 Code-behind:
 public string str = "teste"; 


 E você pode chamá-la através do Javascript


 <script language="JavaScript">


 alert("<%=str%>");

 </script>


 Posts Relacionados:
 http://forums.asp.net/p/1000655/1319119.aspx


Como passar um valor para um campo oculto utilizando javascript em ASP.Net?

 Você pode usar javascript para passar um valor para um controle oculto e pegar o seu valor no servidor após um postback.


 .Aspx:
 <script type="text/JavaScript">
     var str="teste"
     document.getElementById("Hidden1").value=str
 </script>

 <input id="Hidden1" type="hidden" />

 Code-behind:
 protected void Page_Load(object sender, EventArgs e)
 {
     string str = Request["Hidden1"].ToString();
 }

 
 Posts Relacionados:
 http://forums.asp.net/p/1262153/2362090.aspx


 Como registrar uma função Javascript no Code-behind?

 Use RegisterStartupScript:
 Code-behind:
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert(‘teste’);</script>");


 Use Literal control:

 void Button1_Click(object sender, EventArgs e)
 {
     string str;
     str = "<script language='JavaScript'>";
     str += "selectRange()";
     str += "</script>";
     Literal1.Text = str;
 }

 Posts Relacionados:
 http://forums.asp.net/p/981603/1257057.aspx#1257057


Como exibir imagens com um atraso de 5 segundos?

 Utilizando esse script você pode ver imagens clicávies em tempo real sem a necessidade de programas de terceiros ou atualização de página. Você deverá ver uma nova imagem após cada 5 segundos:


<script language="javascript">
 var image="";
 var banners=0;
 function loadbanners()
{
    if (banners==1)
    {
        image="http://localhost:4040/test/Backup1/images/1.png";
    }
    if (banners==2)
    {
        image="http://localhost:4040/test/Backup1/images/2.png";
    }
    if (banners==3)
    {
        image="http://localhost:4040/test/Backup1/images/3.png";
    }
}
   
function cycle()    
{
    if (++banners > 3)
        banners=1;
    loadbanners();
    document.banner1.src =image;
    window.setTimeout('cycle();',5000);
}
 </script>

 

 Posts Relacionados:
 http://forums.asp.net/p/1213103/2147140.aspx


Como capturar as configurações do Browser e aplicar controles de página?

 Você pode usar o JavaScript, suponha que o tipo de controle é <image>.

 Você pode usar o código abaixo:


<script type="text/javascript" language="JavaScript">
     var winWidth = 0;
     var winHeight = 0;
     function resizeImage(){
         var img=document.getElementById("testImage")
         if (window.innerWidth)
            winWidth = window.innerWidth;
         else if ((document.body) && (document.body.clientWidth))
            winWidth = document.body.clientWidth;
         if (window.innerHeight)
            winHeight = window.innerHeight;
         else if ((document.body) && (document.body.clientHeight))
            winHeight = document.body.clientHeight; 
  
     if (document.documentElement  &&
document.documentElement.clientHeight &&
document.documentElement.clientWidth)
         {
             winHeight = document.documentElement.clientHeight;
             winWidth = document.documentElement.clientWidth;
         }
         img.width= winHeight;
         img.width= winWidth;
     }
 </script>


  HTML tag:

<img src="../images/3.jpg" id="testImage" />


 Por favor substituir style ="width: 343px; height: 169px" se a imagem tiver o seu estilo.

 Posts Relacionados:
 http://forums.asp.net/p/1228180/2212987.aspx


Como apagar a sessão quando o usuário fechar a janela?

 Use o código:

 <script type="text/javascript" language="javascript">
 Function window.onbeforeunload()
 {
     if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)
     {
         Var xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
         xmlhttp.open("GET","exit.aspx",false);
         xmlhttp.send();
     }
 }
 </script>


 Então você pode apagar a sessão na página exit.aspx.


Session.Clear();


 Posts Relacionados:
 http://forums.asp.net/p/1237752/2255401.aspx

 

Métodos de passar dados entre páginas

Como utilizar cookies?
  
 Crie uma página chamada page1.aspx e crie um botão e um Textbox na página. Dê um duplo clique no botão e então adicione o seguinte código:

   protected void Button1_Click(object sender, EventArgs e)
   {
      HttpCookie cookie = new HttpCookie("UserName");
      cookie.Value = TextBox1.Text;
      cookie.Expires = DateTime.Now.AddDays(1);
      Response.Cookies.Add(cookie);
      Response.Redirect("Page2.aspx");
   }

 page1.aspx:


   <div>
   <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
   <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
   </div>

 

 Na page2.aspx, dê um duplo clique no formulário e adicione o seguitne código:


   protected void Page_Load(object sender, EventArgs e)
   {
    if (Request.Cookies["UserName"] != null)
     Response.Write(Request.Cookies["UserName"].Value);
   }

 

 Posts Relacionados:
 http://forums.asp.net/t/1223291.aspx


Como utilizar QueryString?


  private void Button1_Click(object sender, System.EventArgs e)
  {
      string url;
      url = "anotherwebform.aspx?name=" +
      TextBox1.Text + "&email=" + TextBox2.Text;
      Response.Redirect(url);
  }

 

Web Form de destino:


  private void Page_Load(object sender, System.EventArgs e)
  {
      Label1.Text = Request.QueryString["name"];
      Label2.Text = Request.QueryString["email"];
  }

 

Posts Relacionados:
http://forums.asp.net/p/1223291/2191155.aspx


Como utilizar Session?


  private void Button1_Click(object sender, System.EventArgs e)
  {
      Session["name"] = TextBox1.Text;
      Session["email"] = TextBox2.Text;
      Server.Transfer("anotherwebform.aspx");
  }

 

Web Form de destino:


  private void Page_Load(object sender, System.EventArgs e)
  {
      Label1.Text = Session["name"].ToString();
      Label2.Text = Session["email"].ToString();
      Session.Remove("name");
      Session.Remove("email");
  }

 

Posts Relacionados:
http://forums.asp.net/p/1255625/2333723.aspx

Como utilizar Use Context?

  //Page1.aspx armazena o valor no context antes da transferencia
  Context.Items("UserName") = txtName.Text;
  Server.Transfer("Page2.aspx");

  //Page2.aspx retorna o valor do context da Page1
  string sName;
  sName = Context.Items("UserName").ToString;
  Response.Write("Seu nome é " + sName);

 

Posts Relacionados:
http://forums.asp.net/t/1238286.aspx


Como utilizar PreviousPage?


.Aspx:

  <asp:Button ID="buttonPassValue" runat="server" Text="Button" PostBackUrl="~/SecondForm.aspx">
  </asp:Button>

Code-behind:


  TextBox1.Text = Request.Form["TextBox1"].ToString();

 

Ou


  TextBox textBoxTemp = (TextBox)PreviousPage.FindControl("TextBox1");
  TextBox1.Text = textBoxTemp.Text;

 

Como você pôde notar, essa é uma implementação simples e limpa de  transferência de valores entre páginas.

Posts Relacionados:
http://forums.asp.net/p/1048041/1474374.aspx


Como utilizar Submit Form?

page1.aspx:


  <%@ Page Language="C#" %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <script runat="server">
  </script>
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <script language="javascript">
  function CopyTextToHiddenField()
  {
  var textbox1Value = document.getElementById("<%=TextBox1.ClientID%>").value;
  document.forms[1].document.getElementById("Hidden1").value = textbox1Value;
  }
  </script>
  </head>
  <body>
      <form id="form1" runat="server">
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
      </form>
      <form name="SubmittedForm" action="page2.aspx" method="post">
      <input id="Submit1" type="submit" value="submit" onclick="CopyTextToHiddenField()" />
      <input name="Hidden1" type="hidden" />
      </form>
  </body>
  </html>

 


page2.aspx:


  <%@ Page Language="C#" %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <script runat="server">
      protected void Page_Load(object sender, EventArgs e)
      {
          Response.Write(Request.Form["Hidden1"]);
      }
  </script>

  <html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
  </head>
  <body>
      <form id="form1" runat="server">
      <div>
      </div>
      </form>
  </body>
  </html>

 


Posts Relacionados:
http://forums.asp.net/p/1257184/2339923.aspx


Como utilizar Server.Transfer?

page1.aspx:


  <%@ Page Language="C#" %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <script runat="server">
      protected void Button_Click(object sender, EventArgs e)
      {
          Server.Transfer("page2.aspx", true);
      }
  </script>

  <html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
  </head>
  <body>
      <form id="form1" runat="server">
      <div>
          <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button_Click" />          <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
      </div>
      </form>
  </body>
  </html>

 

 
page2.aspx:


<%@ Page Language="C#" %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <script runat="server">
      protected void Page_Load(object sender, EventArgs e)
      {
          Response.Write(Request.Form["TextBox1"]);
      }
  </script>
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
  </head>
  <body>
      <form id="form1" runat="server">
      <div>  
      </div>
      </form>
  </body>
  </html>

 

Posts Relacionados:
http://forums.asp.net/p/1262144/2362078.aspx

Referência:
http://msdn.microsoft.com/pt-br/library/6c3yckfw.aspx


Upload de Arquivo

Como fazer upload de um arquivo?

Exemplo:

 

.Aspx:

<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Carregar Arquivo" />


Code-behind:

protected void Button1_Click(object sender, EventArgs e)
{
    if (FileUpLoad1.HasFile)
    {
        FileUpLoad1.SaveAs(Server.MapPath("upload") + "\\" + FileUpLoad1.FileName);
    }
}

 


Como fazer o upload de vários arquivos de uma vez?

Por favor verifique o seguinte artigo em que Haissam Abdul Malak explicam como fazer o upload de vários arquivos de modo organizado utilizando o controle HtmlInputFile.

Posts Relacionados:
http://forums.asp.net/t/1263738.aspx

Referência:
http://aspalliance.com/1221_CodeSnip_Uploading_Multiple_Files_At_Once.all


Como capturar o tipo de dado do arquivo carregado?

Utilize a seguinte propriedade para capturar o tipo de dados do arquivo:

FileUpload1.PostedFile.ContentType;

 

Como capturar o tamanho do arquivo carregado?

Utilize a seguinte propriedade:

FileUpload1.PostedFile.ContentLength;

 

Porque ocorre falha ao fazer o upload de arquivos grandes quando utilizado o controle ASP.NET FileUpload?

Por motivos de segurança, ASP.NET é limitada em termos de tamanho do arquivo enviado. O tamanho padrão máximo de arquivo é de 4 MB, mas isto pode ser mudado através da modificação do atributo MaxRequestLength do elemento <httpRuntime> do Machine.config.

executionTimeout: Número máximo de segundos de execução de uma solicitação antes de ser automaticamente fechada pelo ASP.Net. O Padrão é de 90 segundos no ASP.Net 1.x e 110 segundos no ASP.Net 2.0.

maxRequestLength: Quantidade máxima da solicitação em quilobytes. O tamanho padrão é 4096 KB (4 mb).

Exemplo para permitir arquivos de 1GB com limite de tempo de requisição de 10 minutos:


<httpRuntime maxRequestLength="1048576" executionTimeout="600" />

 
Alterar o tamanho padrão do arquivo que pode ser enviado é uma falha de segurança e pode ser utilizado em ataques de negação de serviço através de OOMS no servidor.

Para máxima segurança contra ataques de negação de serviço, essa configuração deve ser feita em uma tag <location> para limitar o efeito somente em uma determinada página que realiza uploads. Exemplo:


<location path="Page.aspx">
    <system.web>
        <httpRuntime
            maxRequestLength="1048576"
            executionTimeout="600" />
    </system.web>
</location>

 

Referência:
http://forums.asp.net/t/1074332.aspx
http://forums.asp.net/p/1106754/1696069.aspx#1696069


Como fazer upload de imagens somente?

Exemplo:


<table>
    <tr>
        <td>
            <asp:FileUpload ID="FileUpload1" runat="server" />
        </td>
    </tr>
    <tr>
        <td>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Carregar Arquivo" />
        </td>
    </tr>
    <tr>
        <td>
            <asp:Label ID="Label1" runat="server" />
            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="<div>Somente imagens são permitidas!</div>" ValidationExpression="^(([a-zA-Z]:)|(\\\w+)\$?)(\\(\w[\w].*))+(.jpg|.jpeg|.gif|.bmp|.tiff|.tif|.png)$" ControlToValidate="FileUpload1"></asp:RegularExpressionValidator>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="<div>*Selecione um arquivo!</div>" ControlToValidate="FileUpload1"></asp:RequiredFieldValidator>
        </td>
    </tr>
</table>

Posts Relacionados:
http://forums.asp.net/p/1051895/2171502.aspx


Como fazer com que o contole File Upload funcione com um UpdatePanel?

O controle não funciona com postbacks assíncronos, e, portanto, não funciona dentro de uma AJAX UpdatePanel.
O truque para fazer o FileUpload funcionar dentro de uma UpdatePanel Ajax é a configuração de um PostBackTrigger no controle UpdatPanel.

Exemplo:


<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <Triggers>
        <asp:PostBackTrigger ControlID="Button1" />
    </Triggers>
    <ContentTemplate>
        <asp:FileUpload ID="fileupload1" runat="server" /><br />
        <asp:Button ID="Button1" runat="server" Text="Upload" OnClick="Button1_Click" /><br />
        <asp:Label ID="Lable1" runat="server" Text=""></asp:Label>
        <asp:LinkButton ID="LinkButton1" runat="server" Text="Clique Aqui" OnClick="LinkButton1_Click"></asp:LinkButton>
    </ContentTemplate>
</asp:UpdatePanel>


Posts Relacionados:
http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=3764572&SiteID=21&wa=wsignin1.0

 

Calendar

Como mudar as definições do controle Calendar?

No calendar.aspx.cs:


protected void Page_Load(object sender, EventArgs e)
{
    System.Globalization.CultureInfo culture = System.Globalization.CultureInfo.CreateSpecificCulture("ens");
    System.Threading.Thread.CurrentThread.CurrentCulture = culture;
    System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
}


Posts Relacionados:
http://forums.asp.net/t/1133896.aspx


Como selecionar vários datas não sequencias no Code-behind?

Chame a função Add da collection SelectedDates do controle. Você pode adicionar datas em qualquer seqüência, porque a collection irá automaticamente organizá-las em ordem.


protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    Calendar1.SelectedDates.Clear();
    Calendar1.SelectedDates.Add(new DateTime(2008, 8, 1));
    Calendar1.SelectedDates.Add(new DateTime(2008, 8, 7));
    Calendar1.SelectedDates.Add(new DateTime(2008, 8, 15));
}


Posts Relacionados:
http://forums.asp.net/t/1260917.aspx


Como desabilitar algumas datas no controle Calendar?


protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{


string date="02/01/2008";
DateTime dt = DateTime.Parse(date);
if (e.Day.Date == dt)

e.Day.IsSelectable = false;

}


Posts Relacionados:
http://forums.asp.net/t/1230073.aspx


Como estender o controle Calendar para validação do lado do servidor?

Referência:
 http://support.microsoft.com/?scid=kb%3Bpt-br%3B310145&x=20&y=16


Como definir ToolTips e links no evento DayRender do controle Calendar?


protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
        e.Cell.Controls.Clear();
        HyperLink link = new HyperLink();
        link.Text = e.Day.Date.Day;
        link.ToolTip = "Adicione o seu texto!";
        link.NavigateUrl = url;
        e.Cell.Controls.Add(link);
 }


Posts Relacionados:
http://forums.asp.net/p/1036174/1800067.aspx


Como definir diferentes aparências para datas?

Você fazê-lo através do seguinte código:


protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{


if (e.Day.Date.Month == 2 && e.Day.Date.Day == 25)
{
      e.Cell.BackColor = System.Drawing.Color.Yellow;
}
if (e.Day.Date.DayOfWeek == DayOfWeek.Friday || e.Day.Date.DayOfWeek == DayOfWeek.Saturday)
{
      e.Cell.Controls.Clear();
      e.Cell.Text = "Final de Semana";
}

}

 


List Controls

Como habilitar um ASP.NET DropDownList com suporte a OptionGroup?

Você pode sobrescrever a função de DropDownlist e adicionar uma propriedade para isto.
Segue abaixo alguns artigos sobre isso.

Verifique:
http://www.codeproject.com/KB/custom-controls/xlist.aspx
http://www.codeproject.com/KB/custom-controls/DropDownListOptionGroup.aspx


Como desabilitar um item no DropDownList?


<asp:DropDownList ID="DropDownList1" runat="server" Width="235px" AutoPostBack="False">
    <asp:ListItem>1</asp:ListItem>
    <asp:ListItem>2</asp:ListItem>
    <asp:ListItem>3</asp:ListItem>
    <asp:ListItem>4</asp:ListItem>
</asp:DropDownList>

<script type="text/javascript" language="javascript">
function change()
{
    var dd=document.getElementById ('<%=DropDownList1.ClientID %>');
    var value=dd.options[dd.selectedIndex].value;
    if(value!="2") //Exemplo para desabilitar o item de número 2
    {
        setTimeout("__doPostBack('DropDownList1','')", 0);
    }
}
</script>

protected void Page_Load(object sender, EventArgs e)
{
    DropDownList1.Attributes.Add("onchange", "change();");
}

 

Posts Relacionados:
http://forums.asp.net/p/1041568/1451492.aspx


Como manter selecionado um valor em um DropDowlist?

Você deve colocar o código de Databinding do DropDownlist no bloco  !page.Ispostback.
O bloco !postback irá garantir que só será preenchida uma vez durante post backs.


if(!Page.IsPostBack)
{
//Código de Databinding do DropDownList
}

 

Posts Relacionados:
http://forums.asp.net/p/1251081/2312321.aspx

 

Controles dinâmicos

Como criar um controle dinâmico?

Você pode criar um controle dinâmico no evento Page_Init() ou no evento Page_Load():


protected void Page_Load(object sender, EventArgs e)
{
TextBox dynamicTextBox = new TextBox();
dynamicTextBox.ID = "DynamicTextBox";
dynamicTextBox.AutoPostBack = true;
dynamicTextBox.Text = "InitData";
dynamicTextBox.TextChanged += new EventHandler(dynamicTextBox_TextChanged);
this.Form.Controls.Add(dynamicTextBox);
}

void dynamicTextBox_TextChanged(object sender, EventArgs e)
{
Response.Write("Teste");
}

 

Posts Relacionados:
http://forums.asp.net/t/1152363.aspx


Como acessar o valor inserido por um usuário em um controle criado dinamicamente?

1.Obter o valor a partir de dados do formulário POST. Aqui está o código:


if(Request.Form["dynamicTextBox"] != null)
selectedValue = Request.Form["dynamicTextBox"].ToString();


2.Obter o valor  através do método FindControl:


TextBox txt=this.form1.FindControl("dynamicTextBox") as TextBox;


Posts Relacionados:
http://forums.asp.net/p/1119972/1745762.aspx


Como acessar o controle dinâmico através do Javascript?

Referencie a propriedade ClientID (ou UniqueID) do controle no Javascript.


protected void Page_Load(object sender, EventArgs e)
{


Button btn= new Button();
btn.ID = "btn5";
btn.Attributes.Add("runat", "server");
btn.Attributes.Add("onclick", "pop('" + btn.ClientID + "')");
btn.Text = "Test";
this.form1.Controls.Add(btn);

}

function pop(InputBoxID)
{


var InputControl = document.getElementById(InputBoxID);
if (InputControl != null)

window.alert(InputControl.value);

 }

 

Ou
Use o seguinte método:


btn.Attributes.Add("onclick", "pop(this)");   

function pop(InputBox)
 {
     alert(InputBox.value);
 }


Posts Relacionados:
http://forums.asp.net/p/1239593/2260331.aspx#2260331


Como manter todos os controles adicionados dinamicamente após um post back?

Você deve recriar esses controles dinâmicos nos eventos de Page_load ou Page_init() toda vez:


protected void Page_Load(object sender, EventArgs e)
{
    //Recriar controle dinâmico
}


Ou você pode armazenar o controle dinâmico em cache e então restaurá-lo no evento de Page_Load.


<asp:placeholder runat="server" ID="PlaceHolder2"></asp:placeholder>

protected void Button4_Click(object sender, EventArgs e)
{
    Panel tt = new Panel();
    TextBox tb = new TextBox();
    tb.ID = "txtName";
    tb.Text = "Teste";
    tt.Controls.Add(tb);
    PlaceHolder2.Controls.Add(tt);
    Cache["tt"] = tt;
}

protected void Page_Load(object sender, EventArgs e)
{
    if (Cache["tt"] != null)
    {
        Panel tt = Cache["tt"] as Panel;
        PlaceHolder2.Controls.Add(tt);
    }
}


Posts Relacionados:
http://forums.asp.net/p/1242809/2280514.aspx


Porque controles dinâmicos desaparecem após um post back?

O botão dinâmico deve ser recriado após cada post back. Para isso remova o bloco if(!Page.IsPostBack). O recomendado é que os controles sejam criados no evento de Page_Init.

Verifique:
http://forums.asp.net/p/1080863/1598618.aspx

 

Estilo

Como adicionar estilo através do Code-behind?


Label1.Attributes.Add("style", "background-color:Red");


Como adicionar estilo através de javascript?


document.getElementById("Label1").style.backgroundColor = "Red";

 

Como remover espaço?

Adicione o seguinte código na tag “head”:

<style type="text/css">
body
{


padding: 0px;margin: 0px;

}
</style>


Como adicionar estilo através do html?


<link href="<%= CSS %>" rel="stylesheet" type="text/css" />


Note: A folha de estilo geralmente é referenciada na tag <head>, porém pode ser referenciada na tag <body> também. Convém lembrar que a tag <head> deve ter o atributo runat=”server”.

Posts Relacionados:
http://forums.asp.net/p/1197909/2076464.aspx


Como definir uma imagem como plano de fundo de um botão?


<input name="Submit" type="button" value="" />


Posts Relacionados:
 http://forums.asp.net/t/299555.aspx


Como colorir itens em um ListBox?

Exemplo de código:


<style type="text/css">
.optred{background-color:red;}
.optblue{background-color:blue;}
</style>

protected void Page_PreRender(object sender, EventArgs e)
{
    bool flag = false;
    foreach (ListItem li in ListBox1.Items)
    {
        if (flag)
        {
            li.Attributes.Add("class", "optred");
            flag = false;
        }
        else
        {
            li.Attributes.Add("class", "optblue");
            flag = true;
        }
    }
}


Verifique:
http://www.codeproject.com/KB/webforms/ColorListBox.aspx

 

 

Impressão

Como imprimir parte de uma página  web através de CSS?

Exemplo:


<style media="print">
        .Noprint
        {
            display: none;
        }
        .Print
        {
            page-break-after: always;
        }
</style>

 

Html:
<div class="Noprint">
     Isto não será impresso;
</div>
<div class="Print">
     Isto será impresso;
</div>


Posts Relacionados:
http://forums.asp.net/t/981539.aspx


Como imprimir parte de uma página web através de javascript (1)?

 

<script language="JavaScript" type="text/JavaScript">
    function doPrint() {
    bdhtml = window.document.body.innerHTML;
    sprnstr = "<!--startprint-->";
    eprnstr = "<!--endprint-->";
    prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
    prnhtml = prnhtml.substring(0,prnhtml.indexOf(eprnstr));
    window.document.body.innerHTML = prnhtml;
    window.print();
    }
</script>

Html:

<!--startprint-->
Essa área será impressa!
<!--endprint-->
<br />
Essa área não será impressa
<input id="btnPrint" type="button" value="Print" onclick="doPrint()" />


Posts Relacionados:
http://forums.asp.net/p/1234564/2256428.aspx


Como imprimir parte de uma página web através de javascript (2)?

 

<script language="javascript" type="text/javascript">
    function printdiv(divID)
    {
        var headstr = "<html><head><title></title></head><body>";
        var footstr = "</body>";
        var newstr = document.all.item(divID).innerHTML;
        var oldstr = document.body.innerHTML;
        document.body.innerHTML = headstr+newstr+footstr;
        window.print();
        document.body.innerHTML = oldstr;
        return false;   
}
</script>

HTML:

<input name="b_print" type="button" onclick="printdiv('divID');" value=" Print " />
<div id="divID">
    <h1 >
        O conteúdo do DIV que você quer imprimir</h1>
</div>


Posts Relacionados:
http://forums.asp.net/t/1263912.aspx

 

Mail

Quais classes são necessárias para enviar email no ASP.Net?

As classes MailMessage e SmtpMail são usadas para enviar emails através de uma aplicação ASP.NET. MailMessage e SmtpMail fazem parte do namespace System.Web.Mail da biblioteca do .NET Framework 1.1. Você pode utilizar também o System.Net.Mail ao invés de System.Web.Mail se você possui o .NET Framework 2.0 instalado.


Como enviar emails utilizando System.Net.Mail?


Code-Behind:
MailMessage message = new MailMessage();
message.From = new MailAddress("fromusername@DomainName");
message.To.Add(new MailAddress("tousername@DomainName"));
message.CC.Add(new MailAddress("ccusername@DomainName"));
message.Subject = "Subject";
message.Body = "Content";
SmtpClient client = new SmtpClient();
client.Send(message);

web.config:
<system.net>
<mailSettings>
<smtp from="username@DomainName">
<network host="SMTPServerName" port="25" userName="username" password="secret" defaultCredentials="true" />
</smtp>
</mailSettings>
</system.net>


Posts Relacionados:
http://forums.microsoft.com/msdn-br/ShowPost.aspx?PostID=2655211&SiteID=21


Como configurar um servidor SMTP?

Tendo como exemplo o IIS, por favor verifique os seguintes links:

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/56c94d38-b10f-4a1b-a1cd-3714387a042a.mspx?mfr=true
 
Verifique:
http://www.codeproject.com/KB/winsdk/ConfigServerSmtp.aspx   
 

Como enviar um email para servidor Gmail?

Por favor leia o FAQ “Como enviar emails utilizando System.Net.Mail?” primeiro. Após lê-lo você deverá  prestar atenção às seguintes configurações:
O nome do servidor de SMTP do Gmail é “smpt.gmail.com”;
A porta do Gmail é 465, e não a padrão 25;
A autenticação SSL deverá estar configurada como “true”;
Então o segredo para enviar emails com sucesso para contas do Gmail é: porta 465, nome do servidor “smtp.gmail.com” e SSL = true.

Posts Relacionados:
http://forums.asp.net/p/1167140/1944223.aspx

 

GridView

Como editar de dados de um Gridview com DropDownlist?

Verifique o seguinte link:
http://msdn.microsoft.com/pt-br/library/cc580581.aspx 


Como exportar dados do Gridview para Excel?

Exemplo de código:


Aspx:
<asp:gridview id="GridView1" runat="server" allowpaging="True" allowsorting="True"
datasourceid="SqlDataSource1"></asp:gridview>
<asp:sqldatasource id="SqlDataSource1" runat="server" connectionstring="<%$ConnectionStrings:AdventureWorksConnectionString %>" selectcommand="SELECT * FROM [Person].[ContactType]"></asp:sqldatasource>
<asp:button id="Button1" runat="server" text="Button" />

Code-behind:
protected void Button1_Click(object sender, System.EventArgs e)
{
        GridView gd = new GridView();
        gd.DataSource = SqlDataSource1;
        gd.DataBind();

        Response.Clear();
        Response.Buffer = true;
        Response.ContentType = "application/vnd.ms-excel";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
        Response.Charset = "";
        System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
        gd.RenderControl(oHtmlTextWriter);
        Response.Write(oStringWriter.ToString());
        Response.Flush();
        Response.End();
        gd.Dispose();
  }


Verifique o seguinte link:
http://www.c-sharpcorner.com/UploadFile/DipalChoksi/exportxl_asp2_dc11032006003657AM/exportxl_asp2_dc.aspx?MessageChildID=830&Delete=true


Como alterar as propriedades de um TextBox do GridView?

Você pode converter o campo em questão em TemplateField (Clique na seta no canto superior direito do Gridview e selecione 'Edit Columns...')

Dessa forma você terá acesso ao código do TextBox e poderá alterar suas propriedades:

Exemplo:

<asp:TemplateField HeaderText="OBS" SortExpression="OBS">
    <EditItemTemplate>
        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("OBS") %>' Width="50"></asp:TextBox>
    </EditItemTemplate>
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("OBS") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>


Verfique o seguinte link:
http://msdn.microsoft.com/pt-br/library/cc518055.aspx   


Como atualizar campo do GridView com a data atual?

Você pode utilizar a propriedade GridViewUpdateEventArgs.NewValues e adicionar o novo valor de acordo com o nome da coluna (por exemplo a coluna "DATA").

Segue abaixo um exemplo de código:


    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        e.NewValues["DATA"] = DateTime.Now.ToString();
    }


Verique o link:
http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=3623759&SiteID=21      

 


Configuração

Onde armazenar informações de configuração de uma aplicação?

Você pode utilizar o arquivo web.config. Para armazenar informações básicas da aplicação utilize o elemento <AppSettings> do arquivo web.config.

Exemplo:

  <configuration>
    <appsettings>
      <add key="chave1" value="valor1"/>
      <add key="chave2" value="valor2"/>
    </appsettings>
  </configuration>


Para acessar as informações armazenadas no web.config utilize o seguinte código, exemplo:


    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(ConfigurationManager.AppSettings["chave1"].ToString());
    }


Exemplo para armazenar ConnectionStrings:

Arquivo web.config:

  <connectionStrings>
    <add name ="ConnectionString1" connectionString="Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;"/>
  </connectionStrings>

No seu código:
  protected void Page_Load(object sender, EventArgs e)
  {
      string ConnStr;
      ConnStr = ConfigurationManager.ConnectionStrings["ConnectionString1"].ToString();
  }


Verifique o seguintes links:
http://msdn.microsoft.com/pt-br/library/ms228154.aspx

 

Fonte: http://forums.microsoft.com/msdn-br/ShowPost.aspx?PostID=3942375&SiteID=21
Rafael Fagundes.

 


 
Fábio Galante Mans
Grupo SBF - Núcleo de Negócios Web
Rua Hugo D'antola nº 200 - Lapa
São Paulo - SP
Cep: 05038-090
(11) 2588-5222
(11) 9308-8592
f.galante@gruposbf.com.br

 

Artigos relacionados