0

ComboBox - C#

Posted by Fabio's Blog on 20:06
Controles que utilizaremos: DropDownList, RequiredFieldValidator, Button, Label e ValidationSummary.

Estarei neste post mostrando como criar um combobox em C#, para o meu projeto darei o nome de ComboBox e a página ASPX de Default.aspx.
Vamos utilizar as principais propriedades
destes controles para fazer as validações necessárias.

Primeiro vamos criar o combo na nossa página ASPX, utilizaremos muito código HTML, por isso você têm que ter um bom nível de conhecimento nessa linguagem.

Segue abaixo o código da página ASPX.



<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ComboBox._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>ComboBox</title>

</head>

<body>
<form id="form1" runat="server">
<asp: ScriptManager ID="ScriptManager1" runat="server" />
<div>

<asp:DropDownList id="cbo_mes" runat="server" Width="150"></asp:DropDownList>

<asp:RequiredFieldValidator id="vld_rqd_cbo_mes" runat="server" Display="Dynamic" ControlToValidate="cbo_mes" SetFocusOnError="true">

<IMG id="img_cbo_mes" src="../_imagens/validator.gif" style="cursor: help;" runat="server" />

</asp:RequiredFieldValidator>

<asp:Button ID="btn_sele" runat="server" Text="Selecionar" CausesValidation="true" />
<asp:Label ID="lbl_mes" runat="server"></asp:Label>

</div>

<asp:ValidationSummary ID="vld_sum" runat="server" EnableViewState="False" HeaderText="Atenção:" ShowMessageBox="True" ShowSummary="False" />

</form>

</body>

</html>


Vamos as explicações das principais propriedades:

    As propriedade id e runat serão utilizadas em todos os controles de nossa aplicação
        Propriedade id - Especifica o nome do controle.
        Propriedade runat - Especifica que este controle deve ser tratado do lado servidor.

    Controle asp
:DropDownList - Este é o controle combo box, com ele podemos oferecer ao usuário uma lista de dados, para o usuário fazer o selecionamento de apenas um.   
Propriedade Width - Especifica o tamanho do controle no navegador.

    Controle asp:RequiredFieldValidator - Controle de validação, como ele podemos validar um controle sem ser necessário a inclusão de uma função javascript.
Propriedade Display - Especifica o modo como será tratado o erro.Statico, Dinâmico ou nenhum.
Propriedade ControlToValidate - Especifica o controle que será validado.
Propriedade SetFocusOnError - Propriedade se setada true, depois do erro é setado o foco no controle que está sendo validado.

    Controle IMG - Este controle HTML está dentro da tag do controle asp:RequiredFieldValidator, toda vez que ocorre o erro da validação é mostrado esta imagem.
Propriedade src - Especifica a imagem que será mostrada.
Propriedade style - Estilo que mostra a imagem de interrogação quando passar o mouse.

    Controle asp:Button - Controle que fará a ação para ser processado a validação do nosso combo.
Propriedade Text - Especifica o texto que aparecerá no botão
Propriedade CausesValidation - Especifica se o botão fará a validação dos controle na tela. Se estiver com o valor false não será feito nenhuma validação na tela.

    Controle asp:Label - Controle que será mostrado o valor selecionado no combo quando precionarmos o botão.


    Controle asp:ValidationSummary - Controle que faz a validação e mostra no erro a janela em javascript.
Propriedade EnableViewState - Habilita o ViewState do controle na página ou não.
Propriedade HeaderText - Especifica o título da janela para os campos requeridos.
Propriedade ShowMessageBox - Especifica se o controle mostrará a janela ao ocorrer o erro ou não.
Propriedade ShowSummary - Especifica se o erro será mostrado como sumário ao usuário.

    Aqui é o final da criação da nossa página aspx, o próximo passo será feito em nosso code behind.

    Abaixo como deverá ficar o código.

    

using System;

using System.Data;

using System.Configuration;

using System.Collections;

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 ComboBox

{

    public partial class _Default : System.Web.UI.Page

    {

 

        #region Métodos da página

 

        /// <summary>

        /// Page load da página

        /// </summary>

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                this.CarregarCombo();

            }

 

            this.btn_sele.Click += new EventHandler(btn_sele_Click);

 

        }

 

        #endregion Métodos da página

 

        #region Métodos dos controles

 

        /// <summary>

        /// Método do clique do botão

        /// </summary>

        void btn_sele_Click(object sender, EventArgs e)

        {

            this.lbl_mes.Text = this.cbo_mes.SelectedItem.Text;

        }

 

        #endregion Métodos dos controles

 

        #region Métodos

 

        /// <summary>

        /// Função para carregar o combo

        /// </summary>

        private void CarregarCombo()

        {

            // Limpa todos os itens do combo

            this.cbo_mes.Items.Clear();

            // Insere os dados no combo box

            this.cbo_mes.Items.Add(new ListItem("-- Selecione --", ""));

            this.cbo_mes.Items.Add(new ListItem("Janeiro", "1"));

            this.cbo_mes.Items.Add(new ListItem("Fevereiro", "2"));

            this.cbo_mes.Items.Add(new ListItem("Março", "3"));

            this.cbo_mes.Items.Add(new ListItem("Abril", "4"));

            this.cbo_mes.Items.Add(new ListItem("Maio", "5"));

            this.cbo_mes.Items.Add(new ListItem("Junho", "6"));

            this.cbo_mes.Items.Add(new ListItem("Julho", "7"));

            this.cbo_mes.Items.Add(new ListItem("Agosto", "8"));

            this.cbo_mes.Items.Add(new ListItem("Setembro", "9"));

            this.cbo_mes.Items.Add(new ListItem("Outubro", "10"));

            this.cbo_mes.Items.Add(new ListItem("Novembro", "11"));

            this.cbo_mes.Items.Add(new ListItem("Dezembro", "12"));

            this.cbo_mes.SelectedIndex = 0;

        }

 

        #endregion Métodos

 

    }

}



    Abaixo uma imagem de como ficará a tela ao emitir o erro da validação.



    Abaixo um exemplo de como ficará ao passar a validação e carregar o item selecionado no nosso label.


    O código fonte deste exemplo você baixa aqui (Você deve estar logado ao Google).


Espero que tenha sido útil.


0

SQL Server - Efetua a pesquisa dentro das procedures

Posted by Fabio's Blog on 08:19
Select que percorre todas as procs e procurando no text da proc o que você passar como parâmetro.

select
       t2.*
from
        syscomments   t1
        inner join
            sysobjects  t2
        on
            t2.
id    = t1.id
where
    t1.text          like '%String a ser procurada nas procs%'


Espero que seja útil para alguém.

0

Função SQL - FU_FRMT_VALR - Formata valores decimais

Posted by Fabio's Blog on 09:45

Função SQL para formatar valores decimais e não ser preciso formatar na aplicação.



CREATE FUNCTION dbo.FU_FRMT_VALR(@valor decimal(20,2))

returns varchar(30)

as

begin

declare

@valor_char            varchar(30)

,@valor_decm            varchar(30)

,@valor_work            varchar(30)

,@valor_retn            varchar(30)


      select      @valor_char = replace(convert(varchar,@valor),'.',',')

      select      @valor_decm = substring(@valor_char,charindex(',',@valor_char),3)

      select      @valor_char = substring(@valor_char,1,charindex(',',@valor_char)-1)

 

      select @valor_work = ''

      select @valor_retn = ''

      while len(@valor_char) > 3

      begin

            select @valor_work = '.' + right(@valor_char,3)

            select @valor_char = substring(@valor_char,1,len(@valor_char)-3)

            select @valor_retn = @valor_work + @valor_retn

      end

 

      select @valor_retn = @valor_char + @valor_retn + @valor_decm

       return @valor_retn

end

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO


Espero que tenha sido útil.

0

Exemplo de DataReader

Posted by Fabio's Blog on 21:16
Abaixo um exemplo do uso do DataReader, para carregarmos os campos com os valores na nossa base de dados estou postando este exemplo. Os cometários estão explicando linha a linha.

Exemplo de DataReader

//Conexão com Banco de dados

OleDbConnection conn = new OleDbConnection(stringdeconexao);

conn.Open();


//Comando de SELECT

OleDbCommand cmd = new OleDbCommand("Select * from tb_fornecedor", conn);


//Execução

OleDbDataReader dr = cmd.ExecuteReader();

 

// Aqui é o loop do DataReader

while (dr.Read())

{

    // dr[" é o DataReader com o nome do campo no select

    mnuFornecedor.Items[0].ChildItems.Add(new MenuItem(dr["nome"].ToString(), dr["valor"].ToString(), null, dr["navigateurl"].ToString()));

}


Espero que seja útil para alguém.

0

Função SQL - FN_FRMT_INTE - Formata valores inteiros

Posted by Fabio's Blog on 15:05
Função SQL utilizada para formatar valores inteiros, muito utilizado para mostrar em um campo ou em um grid para o usuário trazendo no SELECT o valor já formatado, sem ser preciso fazer isso na aplicação.

CREATE FUNCTION dbo.FN_FRMT_INTE(@valor decimal(20,0))
returns varchar(30)
as
begin
declare
@valor_char            varchar(30)
,@valor_decm            varchar(30)
,@valor_work            varchar(30)
,@valor_retn            varchar(30)


     select      @valor_char = replace(convert(varchar,@valor),'.',',')

     select @valor_work = ''
     select @valor_retn = ''
     while len(@valor_char) > 3
     begin
           select @valor_work = '.' + right(@valor_char,3)
           select @valor_char = substring(@valor_char,1,len(@valor_char)-3)
           select @valor_retn = @valor_work + @valor_retn
     end -- while

     select @valor_retn = @valor_char + @valor_retn

     return @valor_retn
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

Espero mesmo que seja útil para alguém.

0

Error Divide by Zero

Posted by Fabio's Blog on 11:11
Erro SQL - Error Divide by Zero

Algumas vezes nos deparamos com alguns erros "chatos" no nosso dia-a-dia, esse erro ocorre quando em nossos SELECTs ou em nossos cursores tentamos dividir um número por 0.

Podemos utilizar um case para cada divisão e assim quando vier o valor 0 alteramos para 1, mas isso consome nossa produtividade, um dos jeitos de não nos deparamos mais com esse erro é como mostrarei abaixo:

Coloque esse código no inicio da procedure

SET ANSI_WARNINGS OFF
SET ARITHABORT OFF
SET ARITHIGNORE ON

E voltar a configuração do SQL no final da procedure

SET ANSI_WARNINGS ON
SET ARITHABORT ON
SET ARITHIGNORE OFF

Esses comandos farão o SQL ignorar tal fato.


Espero que seja útil para alguém.

0

Função SQL - fn_Split

Posted by Fabio's Blog on 00:11

Função muito utilizada para você criar uma tabela de uma string e inserir dados em massa na base de dados consumindo assim mais o banco do que a aplicação.


Exemplo:

    Tenho uma string "fabio|rente|blog|" e mando para o banco para inserir em uma tabela esses valores.

    Esta função criará uma tabela como abaixo:


        Valor    |    Texto

        -----------------

        1         |    fabio

        2         |    rente

        3         |    blog


    Próximo passo é só fazer a inclusão na tabela.


    Segue abaixo a função para o SQL Server.



DROP  FUNCTION fn_Splitco do que


SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS OFF

GO

 

CREATE  FUNCTION fn_Split(@text varchar(8000), @delimiter varchar(20) = ' ')

RETURNS @Strings TABLE

(   

  position int IDENTITY PRIMARY KEY,

  value varchar(8000)  

)

AS

BEGIN

 

DECLARE @index int

SET @index = -1

 

WHILE (LEN(@text) > 0)

  BEGIN 

    SET @index = CHARINDEX(@delimiter , @text) 

    IF (@index = 0) AND (LEN(@text) > 0) 

      BEGIN  

        INSERT INTO @Strings VALUES (@text)

          BREAK 

      END 

    IF (@index > 1) 

      BEGIN  

        INSERT INTO @Strings VALUES (LEFT(@text, @index - 1))  

        SET @text = RIGHT(@text, (LEN(@text) - @index)) 

      END 

    ELSE

      SET @text = RIGHT(@text, (LEN(@text) - @index))

    END

  RETURN

END

 

GO

 

SET QUOTED_IDENTIFIER OFF

GO

 

SET ANSI_NULLS ON

GO



Espero que tenham gostado.

0

DataList - Visão Geral

Posted by Fabio's Blog on 16:57

DataList - Visão Geral

 

O controle de DataList é fortemente usado para a exibição de dados em uma lista repetida, como por exemplo uma tabela com a lista de produtos mais vendidos ou ainda com os produtos em destaque. Este controle suporta ainda selecionar e editar seus registros. O conteúdo e a disposição dos registros na lista em um controle DataList são definidos usando Templates. No mínimo, cada DataList deve definir um ItemTemplate, entretanto, diversos Templates opcionais podem ser usados customizando ainda mais a aparência da lista.

A tabela 1  descreve os Templates existentes para este controle.

 

Template Name

Descrição

ItemTemplate

Define o conteúdo e o layout dos itens dentro da lista. Requerido.

AlternatingItemTemplate

Se usado, determina o conteúdo e o layout dos itens alternados. Se não for definido, os valores de ItemTemplate são mantidos em toda a lista.

SeparatorTemplate

Se definido, é renderizado entre os itens e os itens alternados. Se não for definido, o separador não será renderizado.

SelectedItemTemplate

Determina o conteúdo e o layout do item selecionado.

EditItemTemplate

Determina o conteúdo e o layout do conteúdo em Edição.

HeaderTemplate

Determina o conteúdo e o layout do cabeçalho da lista.

FooterTemplate

Determina o conteúdo e o layout do rodapé (Footer) da lista

Tabela 1 – Templates do controle DataList

 

 

Os Templates definem os elementos e os controles HTML que devem ser exibidos para um registro. As formatações de cores, fontes etc. podem ser ajustadas através estilos. Cada Template tem suas próprias propriedades de estilo. Por exemplo, os estilos para o EditItemTemplate são ajustados através da propriedade de EditItemStyle.

 

Uma outra propriedade que devemos salientar é a RepeatLayout. Esta propriedade muda completamente a renderização do controle DataList. Um controle DataList exibe por default uma tabela com uma coluna simples na vertical. Mudar a propriedade RepeatLayout para Flow vai remover toda a estrutura Table para o HTML gerado ao renderizar a página.

 

DataList suporta render direcional através da propriedade RepeatDirection, modifica-la permitirá renderizar seus registros horizontalmente ou verticalmente. O controle DataList permite ao desenvolvedor controlar o número das “colunas” que são renderizadas pela propriedade RepeatColumns, não importando se os registros estão renderizados horizontalmente ou verticalmente.

 

Se RepeatDirection for horizontal e RepeatColumns for definido em 5 (cinco), os itens serão renderizados em cinco colunas, cada coluna igual no comprimento e também no total de itens dispostos na horizontal, quando possível. Tabela 2.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

 

 

Tabela 2 – RepeatDirection=Horizontal / RepeatColumns=5

 

 

Se RepeatDirection for vertical e RepeatColumns for definido em 5 (cinco), os itens serão renderizados em cinco colunas, cada coluna igual no comprimento e o total de itens será dividido por cinco e organizados na vertical. Tabela 3.

 

1

4

7

10

12

2

5

8

11

13

3

6

9

 

 

Tabela 2 – RepeatDirection=Vertical / RepeatColumns=5

 

O Código abaixo ilustra um exemplo simples que exibe um DataList com suas propriedades RepeatDirection, RepeatLayout e RepeatColumns, sendo possível alterá-las dinamicamente.

 

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>

 

<html>

 

<script language = "C#" runat="server">

 

    ICollection CreateDataSource() {

        DataTable dt = new DataTable();

        DataRow dr;

 

        dt.Columns.Add(new DataColumn("ValorString", typeof(string)));

 

        for (int i = 0; i < 10; i++) {

            dr = dt.NewRow();

            dr[0] = "Item " + i.ToString();

            dt.Rows.Add(dr);

        }

 

        DataView dv = new DataView(dt);

        return dv;

    }

 

    void Page_Load(Object Sender, EventArgs E) {

        if (!IsPostBack) {

            DataList1.DataSource = CreateDataSource();

            DataList1.DataBind();

        }

    }

 

    void Button1_Click(Object Sender, EventArgs E) {

 

        if (DropDown1.SelectedIndex == 0)

            DataList1.RepeatDirection = RepeatDirection.Horizontal;

        else

            DataList1.RepeatDirection = RepeatDirection.Vertical;

        if (DropDown2.SelectedIndex == 0)

            DataList1.RepeatLayout = RepeatLayout.Table;

        else

            DataList1.RepeatLayout = RepeatLayout.Flow;

        DataList1.RepeatColumns=DropDown3.SelectedIndex+1;

 

        if ((Check1.Checked ==true) && (DataList1.RepeatLayout == RepeatLayout.Table)) {

            DataList1.BorderWidth = Unit.Pixel(1);

            DataList1.GridLines = GridLines.Both;

        }

        else  {

            DataList1.BorderWidth = Unit.Pixel(0);

            DataList1.GridLines = GridLines.None;

        }

    }

 

</script> 

<body>
    <h3><font face="Verdana">Exemplo de DataList Simples</font></h3>
     <form id="Form1" runat="server">
    <font face="Verdana" size="-1">
        <asp:DataList id="DataList1" runat="server"
            BorderColor="black"
            CellPadding="3"
            Font-Names="Verdana"
            Font-Size="8pt"
            HeaderStyle-BackColor="#aaaadd"
            AlternatingItemStyle-BackColor="Gainsboro"
            >

              <HeaderTemplate>

                ITENS...

              </HeaderTemplate>

              <ItemTemplate>

                <%# DataBinder.Eval(Container.DataItem, "ValorString") %>

              </ItemTemplate>

        </asp:DataList>

 

        <br /><br />

        <hr noshade align="left" width="300px">

        RepeatDirection:

        <asp:DropDownList id=DropDown1 runat="server">

            <asp:ListItem>Horizontal</asp:ListItem>

            <asp:ListItem>Vertical</asp:ListItem>

        </asp:DropDownList><br>

 

        RepeatLayout:

        <asp:DropDownList id=DropDown2 runat="server">

            <asp:ListItem>Table</asp:ListItem>

            <asp:ListItem>Flow</asp:ListItem>

        </asp:DropDownList><br>

 

        RepeatColumns:

        <asp:DropDownList id=DropDown3 runat="server">

            <asp:ListItem>1</asp:ListItem>

            <asp:ListItem>2</asp:ListItem>

            <asp:ListItem>3</asp:ListItem>

            <asp:ListItem>4</asp:ListItem>

            <asp:ListItem>5</asp:ListItem>

        </asp:DropDownList><br>

 

        Exibir Bordas:

        <asp:CheckBox id=Check1 runat="server" /><p>

        <asp:LinkButton id=Button1 Text="Atualiza DataList" OnClick="Button1_Click" runat="server"/>

    </font>

    </form>

 

</body>

</html>

 

Selecionando Itens em um DataLis (SelectItemTemplate)

 

Você pode customizar o conteúdo e a aparência do item selecionado através da propriedade SelectedItemTemplate. O SelectedItemTemplate é controlado pela propriedade SelectedIndex. Por padrão o valor de SelectedIndex é -1, significando que nenhum dos itens na lista está selecionado. Quando SelectedIndex é ajustado a um conteúdo em particular, esse conteúdo pode ser destacado usando o SelectedItemTemplate.

 

O exemplo abaixo ilustra o uso de SelectItemTemplate em um controle DataList.

 

 

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>

 

<script runat="server"> 

    ICollection CreateDataSource() {

        DataTable dt = new DataTable();

        DataRow dr;

        dt.Columns.Add(new DataColumn("ValorInteiro", typeof(Int32)));

        dt.Columns.Add(new DataColumn("ValorString", typeof(string)));

        dt.Columns.Add(new DataColumn("ValorData", typeof(DateTime)));

 

        for (int i = 0; i < 9; i++) {

            dr = dt.NewRow();

            dr[0] = i;

            dr[1] = "Item " + i.ToString();

            dr[2] = DateTime.Now;

            dt.Rows.Add(dr);

        }

 

        DataView dv = new DataView(dt);

        return dv;

    }

 

    void Page_Load(Object Sender, EventArgs e) {

        if (!IsPostBack)

          CarregaLista();

    }

 

    void CarregaLista() {

        DataList1.DataSource= CreateDataSource();

        DataList1.DataBind();

    }

 

    void DataList_ItemCommand(object Sender, DataListCommandEventArgs e) {

        string cmd = ((LinkButton)e.CommandSource).CommandName;

        if (cmd == "select")

            DataList1.SelectedIndex = e.Item.ItemIndex;

        CarregaLista();

    }

</script>

 

<html>

<head runat="server">

    <title>Exemplo do Controle DataList</title>

</head>

<body>

    <h3>Usando o SelectItemTemplate com o DataList</h3>

    <form id="Form1" runat="server">

        <asp:DataList id="DataList1" runat="server"

            BorderColor="black"

            BorderWidth="1"

            GridLines="Both"

            CellPadding="3"

            Font-Names="Verdana"

            Font-Size="8pt"

            Width="150px"

            HeaderStyle-BackColor="#aaaadd"

            AlternatingItemStyle-BackColor="Gainsboro"

            SelectedItemStyle-BackColor="yellow"

            OnItemCommand="DataList_ItemCommand"

            >

              <HeaderTemplate>

                INTENS

              </HeaderTemplate>

              <ItemTemplate>

                <asp:LinkButton

                  id="button1"

                  runat="server"

                  Text="Detalhes..."

                  CommandName="select" />

 

                <%# DataBinder.Eval(Container.DataItem, "ValorString") %>

 

              </ItemTemplate>

              <SelectedItemTemplate>

                Item:

                <%# DataBinder.Eval(Container.DataItem, "ValorString")%>

                <br>

                Data do Pedido:

                <%# DataBinder.Eval(Container.DataItem, "ValorData", "{0:d}") %>

                <br>

                Quantidade:

                <%# DataBinder.Eval(Container.DataItem, "ValorInteiro", "{0:N1}") %>

                <br>

              </SelectedItemTemplate>

        </asp:DataList>  

    </form>

</body>

</html>

 

 Espero que seja útil para alguém.

 

 



Copyright © 2009 Fabio's Blog All rights reserved. Theme by Laptop Geek. | Bloggerized by FalconHive. Distribuído por Templates