Use o controle de ligação da lista ASP+
Nikhil Kothari
Microsoft Corporation
Julho de 2000
Resumo: Explique os controles ASP+ Repeater, Datalist e Datagrid Server. Esses controles podem realizar uma fonte de dados, interface do usuário do aplicativo baseada em HTML. Discuta os conceitos relacionados a esses controles e resuma os exemplos básicos do uso desses controles.
Índice
Breve introdução
Como funciona o controle de ligação da lista?
Controle do repetidor
Controle de Datalist
Controle DataGrid
Repetidor, Datalist ou Datagrid?
Recursos relacionados
Faça o download do arquivo de exemplo (56 KB) relacionado a este artigo.
Breve introdução
O repetidor, o diário de dados e o controle DataGrid constituem os conjuntos de controle da web relacionados no espaço de nome no sistema.Web.WebControls na estrutura da página asp+. Esses controles produzem o conteúdo da lista de ligação ou a fonte de dados da tela HTML. Portanto, eles se referem coletivamente a eles como "controles de ligação da lista".
Semelhante a outros controles da Web na estrutura, esses controles fornecem modelos de programação consistentes e encapsulam uma lógica representativa independente do navegador. Essas características permitem que os desenvolvedores programem em modelos de objetos sem precisar dominar o conhecimento técnico inconsistente e complexo relacionado ao HTML.
Esses três controles podem representar o conteúdo da fonte de dados relacionado às suas fontes de dados relacionadas, de acordo com uma variedade de layouts (incluindo listas, colunas/colunas de jornais e layouts de fluxo (fluxos HTML)). Além disso, eles também permitem criar um layout completamente diferente ou completamente personalizado. Além da lógica da embalagem, ele também fornece a função de processar os dados transmitidos, o gerenciamento do status de execução e os eventos desencadeados. Por fim, eles também fornecem diferentes níveis de suporte para operações padrão, como seleção, edição, paginação e classificação. Esses controles podem simplificar vários aplicativos da Web comuns, incluindo relatórios, carrinhos de compras, listas de produtos, resultados de consultas e menus de navegação.
A seguir, ilustrará ainda mais esses controles e como usá -los em seus aplicativos da Web e como escolher controles.
Como funciona o controle de ligação da lista?
Esta seção é o material de fundo do restante deste artigo. Visão geral Os métodos de trabalho desses controles de ligação da lista, suas características comuns e certos conceitos relacionados.
DataSource Attribute
Cada controle possui um atributo DataSource com seu tipo é System.Collection.icollection. Nas palavras mais simples, as fontes de dados são uma lista ou coleção de objetos semelhantes.
Vários objetos nessa estrutura fornecem a implementação do ICOLLECTION. Esta coleção inclui system.data.dataview (geralmente é usada para acessar bancos de dados relacionais e dados XML), a implementação geral do ICOLLECTION (como ArrayList e Hashtable) e Array.
Diferentemente dos controles tradicionais de ligação de dados (eles geralmente precisam de conjuntos de registros ADO), exceto para implementar a interface do ICOLLECTION, esses controles de ligação da lista não fortalecem nenhum outro requisito para suas fontes de dados. De acordo com o design, o tipo e a estrutura de dados que podem ser usados como um valor de atributo de DataSource válido por meio de uma quantidade grande e eles podem maximizar simples e flexibilidade para o seu código de aplicativo.
Coleção de projetos
Cada controle de ligação da lista contém um conjunto de projetos. O controle é definido em sua coleção de projetos, listando a fonte de dados atual desses objetos. Crie um único item para cada objeto e use -o para representar o objeto. Esses itens fazem parte da estrutura hierárquica de controle contida no controle de ligação da lista.
A tabela abaixo lista o tipo de projeto associado à fonte de dados.
O tipo de projeto padrão criado pelo projeto
AlternationItem é a criação do projeto com lances estranhos na coleção de projetos
SelectedItem é criado para o projeto selecionado (independentemente de o projeto ser um projeto alternativo)
O EditItem é criado para projetos no modo de edição (seja selecionado ou alternativo)
O controle será criado ao mesmo tempo nos seguintes itens que serão usados. No entanto, eles não estão associados a dados da fonte de dados.
O cabeçalho é usado para representar as informações do cabeçalho
A nota de rodapé é usada para indicar as informações de pés
Os separadores são usados para representar o conteúdo entre cada item mostrado na Figura 1, e é aplicável apenas ao repetidor e ao Datalist
O símbolo de paginação é usado para indicar a interface do usuário da paginação associada ao controle de datagrid
Figura 1. Comparado à coleção "Projeto" da coleção "Control"
Ligação e criação de dados do projeto
O controle de ligação da lista segue o modelo explícito de ligação de dados implementado em toda a estrutura ASP+. Isso significa que o controle só precisa ser listado quando o método do banco de dados é chamado.
Quando o método do banco de dados for chamado, o controle da lista listará sua fonte de dados, criará um projeto e inicializará, extraindo o valor de sua fonte de dados. Se o gerenciamento de status estiver ativado, o controle também salvará todas as informações necessárias para criar seu projeto durante o período de processamento de retorno da página sem definir a fonte de dados.
O modelo explícito de ligação de dados permite que o código do seu aplicativo determine com precisão quando e onde a fonte de dados é necessária na sequência de processamento. Esse recurso torna o acesso a servidores de banco de dados cada vez mais eficiente, e esses acessos geralmente são a operação mais consumida de aplicativos da Web.
A regra geral é que o banco de dados deve ser chamado sempre que você precisar recriar o projeto. Na maioria dos casos, você ligará para o banco de dados quando sua página for solicitada para criar uma coleção inicial de projetos pela primeira vez. Durante a execução de seguidores desta página, você precisará chamar esse método em vários procedimentos de processamento de eventos que são alterados pela coleção de projetos. Isso acontece quando a consulta usada para criar a fonte de dados inicial pode acontecer. Isso também pode acontecer quando o status do projeto muda (como mudar de apenas para o modo de edição).
estilo
Ao usar atributos de estilo no modelo de objeto, você pode definir todos os controles de dados e datagrid e os formatos e aparências que ele contém. Esses atributos podem personalizar fontes, cores, bordas e outros fatores de aparência. O atributo de estilo do próprio controle (como cor de primeiro plano, cor de fundo, fonte e estilo de borda) afetará a representação de todo o controle.
Além disso, cada controle contém um grande número de atributos de estilo que corresponde aos tipos de itens que criou, como ItemStyle, alternatingItemstyle e HeaderherStyle. O Datagrid oferece atributos de estilo de terceiro nível que afetam todas as células em colunas específicas. Cada coluna contida no controle pode ter seu próprio HeadlersTyle, FootersTyle e Itemstyte.
modelo
O formato de controle de estilo é exibido, enquanto o modelo define o conteúdo e a representação de cada item. Você pode pensar no modelo como uma folha de código HTML, que define a estrutura hierárquica de controle usada para representar o projeto.
Os controles repetidores e dados de dados são acionados pelos seus modelos especificados para fornecer várias propriedades de modelo settable, como itemTemplate, alternatingItemTemplate e HeadTemplate. Semelhante ao estilo, cada modelo corresponde a um tipo específico de projeto.
O controle do datagrid não é modelo. No entanto, os templatecolumns na coluna de colunas do controle fazem o uso de modelos no DataGrid. Cada célula em Templatecolum pode conter um modelo, que é muito semelhante aos itens no controle de repetidor ou datalista. Isso também torna possível a personalização no Datagrid.
Ligação de dados no modelo
A estrutura hierárquica de controle contida nos itens de definição de modelo. Ao usar expressões de ligação de dados, os atributos de controle nessa estrutura de nível podem estar ligados às propriedades de dados associadas a este projeto.
O projeto lógico de nível pai como modelo é chamado de "contêiner" na expressão de ligação de dados. Cada contêiner possui um atributo chamado Dataitem, que cita seus dados associados. Como resultado, a maioria das expressões típicas de ligação de dados no modelo liga os atributos de controle em uma determinada propriedade do contêiner.dataitem. Essa ligação será explicada ainda mais nos exemplos a seguir.
Controle do repetidor
Como mencionado anteriormente, o controle do repetidor é completamente acionado pelo modelo, permitindo uma representação e layout completamente personalizados. A figura abaixo ilustra esta função.
Figura 2. Link Lista de símbolos de projeto vinculados gerados usando o controle do repetidor
Extraído do Repeater1.aspx:
<%@Page Language = C# src = repetidor1.cs Iritos = samais.repeter1Page%>
Elástico
<ASP: Repeater Runat = ID do servidor = linkslistrepeater
DataSource = '< %# siteelinks %>'>
<nome do modelo = headertemplate>
<ul type = 1>
</modelo>
<nome do modelo = itemTemplate>
<li>
<Asp: hyperlink runat = servidor
text = '< %# databinder.eval.eval (container.dataitem, site) %>'
NavigateURL = '< %# databinder.eval.eval.dataitem, siteurl) %>'>
</asp: hyperlink>
</li>
</modelo>
<nome do modelo = FooteTemplate>
</ul>
</modelo>
</asp: repetidor>
Este arquivo .aspx mostrou uma declaração de geração de um controle repetidor para gerar uma lista de símbolos do projeto.
Este exemplo ilustra o método de instrução para definir a fonte de dados com sintaxe de ligação de dados (<%#...%>). Quando você chama o método do banco de dados, a expressão na ligação de dados é executada. Nesse caso, a propriedade DataSource do repetidor está vinculada à propriedade SiteLinks na página, e a última contém a referência da URL a ser exibida.
O repetidor é o único controle que permite que os fragmentos HTML existam em seu modelo. Neste exemplo, a lista de símbolos do projeto é dividida em três partes:
Iniciado pela lista de headertemplate (<ul type = 1>).
Termine o rótulo (</ul>) pela lista representada pelo FootTerMplate.
O corpo principal da lista é colocado a partir do item da lista (<li>) gerado repetindo o ItemTemplate em cada objeto no conjunto Sitelinks.
Você também pode usar esses modelos para especificar a marca de início (<BATL>) no cabeçalho, o rótulo final (</tabela) especifica a tabela na nota de rodapé e especificar uma única linha de observação em cada projeto (<te>) Essência Esta opção de substituição levará à representação da lista.
Você deve especificar o itemTemplate. É o único modelo necessário. Quando outros modelos não são especificados, o controle usará automaticamente este itemTemplate para outros modelos.
No exemplo a seguir, o ItemTemplate contém um controle da web do HyperLink. Os atributos de texto e navegação deste controle estão vinculados às propriedades de dados associadas a cada projeto duplicado. Isso é concluído usando a expressão de ligação de dados (procurando imediatamente a expressão após a criação de um projeto).
Repeater1.cs:
Amostras de espaço para nome {
Elástico
Classe pública Repeater1Page: Página {
Repeater protegido LinkSlistRePeater;
Public ICOLLECTION SITELINKS {
pegar {
sites ArrayList = new ArrayList ();
Sites.add (New SiteInfo (Microsoft Home,
http://www.microsoft.com);
Sites.add (New SiteInfo (MSDN Home,
http://msdn.microsoft.com);
Sites.add (New SiteInfo (MSN Homepage,
http://www.msn.com));
Sites.add (New SiteInfo (Hotmail,
http://www.hotmail.com));
Sites de retorno;
}
}
Substituição protegida void sobreoad (EventArgs e) {{
base.onload (e);
if (! ispostback) {
// Quando solicitado a página pela primeira vez, a ligação de dados é executada.
// Isso chamará cada controle recursivamente na estrutura hierárquica de controle desta página.
banco de dados ();
}
}
}
Classe Public Sealed SiteInfo {
Site de String Private;
Private string siteurl;
public siteInfo (string sitename, string siteurl) {{
this.sitename = sitename;
this.siteurl = siteurl;
}
Site de String Public {
obtenha {site de retorno;}
}
public string siteurl {
geturn siteurl;}
}
}
}
Este arquivo .cs contém o código que aparece junto na página ASPX na lista anterior.
A classe Repeater1Page abrange o método Onload da classe Page. Isso indica que o banco de dados é chamado na primeira solicitação desta página. Isso fará com que a expressão de ligação de dados nessas páginas valorize os dados e faça com que a lista de controle do repetidor seja a fonte dos dados e crie seus projetos. Ligue para o método do banco de dados somente quando a primeira solicitação. A razão pela qual isso pode funcionar é porque o repetidor pode criar seu projeto no processo de retorno do status preservado antes, sem a necessidade de instâncias de fonte de dados.
Esta página revela os atributos públicos do tipo ICollection. Isso será usado na expressão de ligação de dados do valor do atributo de fonte de dados do repetidor. A aquisição de atributos usa o ArrayList contendo um conjunto de sequências SiteInfo. Esse atributo é público, porque apenas as páginas de membros públicas e de proteção podem ser usadas nas expressões de ligação de dados.
Cada objeto SiteInfo possui dois atributos: Sitename e Siteurl. Quando a ligação dos dados do controle de hiperlink no modelo, acesse esses atributos. Na expressão de ligação desse controle, o container.dataitem disse que é necessário vincular um item específico a um único objeto SiteInfo nele. Databinder.eval (container.dataitem, sitename) visita a propriedade Sitename do objeto SiteInfo atual.
Exemplo de repetidor1 apresenta vários conceitos básicos:
Modelo de definição
Expressão gramatical de ligação de dados e ligação de dados no modelo
Use o ArrayList's ICollection como fonte de dados
Ligue para o método do banco de dados durante a página de processamento inicial
Controle de Datalist
O controle do datalista é um controle orientado para o modelo que fornece a capacidade de usar atributos de estilo para formatar sua capacidade. Também pode produzir várias colunas. A Figura 3 ilustra essas duas características.
Figura 3. Exemplos gerados a partir de colunas duplas do Datalist
Trecho de Datalist1.aspx:
<%@página de página = c# src = datalist1.cs herds = samais.datalist1page%>
Elástico
<ASP: Datalist Runat = ID do servidor = PeicalDatalist
RepetirColumns = 2 repeatDirection = repeatMode vertical = tabela
largura = 100%>
<nome poperty = alternatingItemstyle>
<Asp: tabelaItemstyle backcolor =#Elyeee/>
</Propriedade>
<nome do modelo = itemTemplate>
<Asp: painel runat = servidor font-size = 12pt font-bold = true>
< %# ((Pessoa) container.dataitem) .Nome %>
</asp: painel>
<ASP: Rótulo Runat = Largura do servidor = 20px
BordersTyle = Solid Borderwidth = 1px borderColor = preto
backcolor = '< %# ((pessoa) contêiner.dataitem)
</asp: etiqueta>
<ASP: Rótulo Runat = Servidor Fonte-Size = 10pt
Text = '< %# getColorname ((pessoa) contêiner.dataitem)
</asp: etiqueta>
</modelo>
</asp: Datalist>
Este arquivo .aspx mostrou uma instrução do Datalist usada para gerar este exemplo.
Neste exemplo, o layout multi -coluna do Datalist é alcançado definindo a propriedade RepeatColumns como "2". Definir a direção repetida como "vertical" fará com que o projeto organize de cima para baixo e depois organizado da esquerda para a direita. Por outro lado, o valor definido como "horizontal" fará com que o projeto seja organizado da esquerda para a direita e depois de cima para baixo.
A sintaxe ASPX contém configurações para alguns atributos de estilo de dados. Neste exemplo, a largura do Datalist é definida como 100%do seu nível pai. O alternationItemstyle com fundo cinza é obter uma aparência listrada. Este exemplo também mostra que o modelo pode conter qualquer definição de controle complexo para atender às necessidades de obter o layout ideal em cada projeto.
Finalmente, a expressão de ligação de dados nesse modelo está ligada no estágio inicial convertendo o contêiner.dataitem em seu tipo. Isso não causará a ligação posterior da ligação posterior da ligação posterior do uso do banco de dados.eval (como mostrado no repetidor1). No entanto, esse método pode produzir baixa legibilidade. O exemplo a seguir também fornece um exemplo de expressão que chama o método getColorname (esse método é implementado em um arquivo suportado nesta página).
Datalist1.cs:
Amostras de espaço para nome {
Elástico
classe pública Datalist1Page: Página {
Datalista de dados protegido Peoplledatalist;
String protegida getColorname (color c) {
Retornar
TypeDescriptor.getConverter (TypeOf (cor)).
}
Prive void loadpeicallist () {
// Crie uma fonte de dados
Pessoa [] pessoas = nova pessoa [] {
Nova pessoa (Nikhil Kothari, color.green),
Nova pessoa (Steve Millet, color.purple), color.purple),
Nova pessoa (Chris Anderson, color.blue), color.blue,
Nova pessoa (Mike Pope, Color.orange),
Nova pessoa (Anthony Moore, Color.yllow),
Nova pessoa (Jon Jung, color.mediumaquamarine),
Nova pessoa (Susan Warren, color.slateblue),
Nova pessoa (Izzy Gryko, Color.red)
};
// Defina a fonte de dados do controle
peicaldatalist.dataSource = pSPLE;
// e faça o controle usar esta fonte de dados para construir seu projeto
peicaldatalist.databind ();
}
Substituição protegida void sobreoad (EventArgs e) {{
base.onload (e);
if (! ispostback) {
// Veja esta página pela primeira vez
LoadPeicAllist ();
}
}
}
Pessoa de classe selada pública {
Nome de string privado;
PRIVE COLOR FAVORITECOLOR;
Pessoa pública (Nome da String, Color Favoritecolor) {{
this.name = nome;
this.Favoritecolor = favoritecolor;
}
Public color favoritecolor {
geturn favoritecolor;}
}
Nome da String Public {
Geturn Name;}
}
}
}
Nesta página, o atributo DataSource do controle é definido através de configurações do programa, que é liquidado no arquivo ASPX. Os resultados dos dois métodos são os mesmos. Que tipo de método não pode ser selecionado, você deve chamar o método do banco de dados para que o controle possa listar suas fontes de dados e criar itens que deseja indicar.
A fonte de dados usada neste exemplo é uma variedade simples de objeto de pessoa. Como cada matriz implementa o método do iCollection, a matriz é adequada para a fonte de dados. Isso mostra a flexibilidade que pode ser obtida quando a estrutura e o tipo de dados podem ser obtidos quando a fonte de dados puder ser obtida.
Datalist1 Exemplo apresenta os seguintes conceitos:
Defina a ui rica html no modelo
Use a matriz simples como fonte de dados
Defina a fonte de dados através do programa
Várias expressões permitidas na sintaxe de ligação de dados