2

Abrindo uma aplicação e passando parâmetros cm C# - Windows Forms

Posted by Fabio's Blog on 12:44
Dica para quando existe a necessidade de abrir uma aplicação pelo c# e passar os parâmetros necessários para esta aplicação.

Utilização das Classes Process e ProcessStartInfo.

        

Process p = new Process();
p.EnableRaisingEvents = false;
p.StartInfo.WorkingDirectory = @"C:\Program Files\";
p.StartInfo.CreateNoWindow = false;
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\Program Files\Calc.exe", @"C:\Program Files\ww.txt");
System.Diagnostics.Process.Start(startInfo);

Espero que tenha sido útil.

0

Data Inicial e Final de uma semana a partir da data atual

Posted by Fabio's Blog on 08:37
Dica de SQL para calcular a Data Inicial e Final de uma semana a partir da data atual.

--inicial
select convert(varchar,year(convert(varchar,getdate()-(datepart(dw,getdate())-1),20))) + '-' + right('00'+convert(varchar,month(convert(varchar,getdate()-(datepart(dw,getdate())-1),20))),2) + '-' + right('00'+convert(varchar,day(convert(varchar,getdate()-(datepart(dw,getdate())-1),20))),2) + '-' + ' 00:00'
--final
select convert(varchar,year( convert(varchar,getdate()+7-atepart(dw,getdate())),20))) + '-' +right('00'+convert(varchar,month( convert(varchar,getdate()+(7-datepart(dw,getdate())),20))),2) + '-' + right('00'+convert(varchar,day( convert(varchar,getdate()+(7-datepart(dw,getdate())),20))),2) + '-' + ' 23:59'

Espero que tenha sido útil.

0

Definindo valores para uma coluna Identity

Posted by Fabio's Blog on 10:17

Frequentemente tenho que fazer carregamento de dados para fazer testes ou alguma alteração no sistema, e carregamos dados próximos os dados de produção, ai encontramos tabelas com coluna de IDENTITY e nos deparamos com o erro abaixo:


Msg 544, Level 16, State 1, Line 1
Cannot insert explicit value for identity column in table 'TB_AGRI_CART_CLIE_STAT' when IDENTITY_INSERT is set to OFF.

Este erro ocorre por causa da coluna identity, não podemos especificar um valor para esta coluna, quem especifica é o próprio SQL, mas, para este caso podemos utilizar o comando IDENTITY_INSERT que "libera" a inclusão de dados para esta coluna. Segue abaixo:


O comando Identity_Insert

A solução é bem simples. Quando você precisar inserir alguma linha e forçar o valor da coluna Identity, utilize os comandos:

Antes de inserir, execute o comando:

SET IDENTITY_INSERT nome_da_tabela ON

 

Depois de inserido, retorne o autoidentity novamente:

SET IDENTITY_INSERT nome_da_tabela OFF

Um exemplo prático

Copie todo o conteúdo do código abaixo, no Query Analyzer e execute instrução por instrução para entender o funcionamento. Para evitar a necessidade de criar uma nova tabela em algum banco de dados, note que fiz uso de uma tabela temporária para o exemplo. 

Exemplo

-- O simbolo # antes do nome da tabela, indica que ela é uma Tabela Temporária

create table #testing
(
ID int not null IDENTITY, -- Coluna do tipo Identity
nome varchar(20) null
)

-- Insira algumas linhas apenas para teste:
-- Note que a coluna ID não são informadas, mesmo que Not Null.

-- Isso porque a diretiva IDENTITY se encarrega de preencher o valor
Insert #testing values ('Fábio')
Insert #testing values ('Luiz')

-- Veja os valores na tabela:
Select * from #testing

-- Tente inserir um valor de Identity:
Insert #testing (ID, nome) values (10, 'Moroni') -- Retorna Erro...

-- Execute o comando IDENTITY_INSERT ON:
Set IDENTITY_INSERT #testing ON

-- Agora tente inserir novamente:
Insert #testing (ID, nome) values (10, 'Moroni') -- Sem Erro...

-- Veja agora os valores na tabela (inclusive o último item):
Select * from #testing

-- Execute o comando IDENTITY_INSERT OFF:
Set IDENTITY_INSERT #testing OFF

-- Agora tente inserir novamente um valor na coluna ID:
Insert #testing (ID, nome) values (20, 'Moroni') -- Retorna Erro...

-- Vamos excluir a tabela criada
drop table #testing

Conclusão

Este recurso é muito útil em determinadas situações (normalmente quando dados precisam ser corrigidos no banco de dados), porém não deve de maneira nenhuma ser utilizado em um processo de produção. Faça uso deste recurso como uma ferramenta de desenvolvimento.


Espero que tenha sido útil.

0

Formatação de Datas em SQL Server

Posted by Fabio's Blog on 14:45
Formatação de Datas em SQL Server.

Segue abaixo:

SELECT CONVERT(VARCHAR(12),GETDATE(),101) AS '101',
CONVERT(VARCHAR(12),GETDATE(),102) AS '102',
CONVERT(VARCHAR(12),GETDATE(),103) AS '103',
CONVERT(VARCHAR(12),GETDATE(),104) AS '104',
CONVERT(VARCHAR(12),GETDATE(),105) AS '105',
CONVERT(VARCHAR(12),GETDATE(),106) AS '106',
CONVERT(VARCHAR(12),GETDATE(),107) AS '107',
CONVERT(VARCHAR(12),GETDATE(),108) AS '108',
CONVERT(VARCHAR(12),GETDATE(),109) AS '109',
CONVERT(VARCHAR(12),GETDATE(),110) AS '110',
CONVERT(VARCHAR(12),GETDATE(),111) AS '111',
CONVERT(VARCHAR(12),GETDATE(),112) AS '112',
CONVERT(VARCHAR(12),GETDATE(),113) AS '113',
CONVERT(VARCHAR(12),GETDATE(),114) AS '114',
CONVERT(VARCHAR(12),GETDATE(),120) AS '120',
CONVERT(VARCHAR(12),GETDATE(),121) AS '121'

Espero que tenha sido útil.

0

Usando javascript para percorrer Repeater

Posted by Fabio's Blog on 08:50
Precisava de uma função em javascript para percorrer um repeater, neste repeater têm caixas de texto, precisava verificar todas e mostrar uma mensagem ao usuário, segue abaixo a função, chamei-a no botão da seguinte maneira.

btn.OnClientClick = "return GetAllTextBox();";

E a função:

function GetAllCheckBox()
{
var count = 0;
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++)
{
if(inputs[i].type == 'text' && inputs[i].name.indexOf('tbx_id') != -1)
{
if(inputs[i].checked == true)
{
count++;
break;
}
}
}

if(count == 0)
return false;
return true;
}


Desta maneira se não retornar true ao nosso botão, não é chamado o código do code-behind, e não efetuará o postback.

Espero que tenha sido útil.

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