Controle DataGrid
O controle DataGrid permite gerar uma lista de ricos formato de fonte de dados. Além disso, ele também suporta itens de seleção com outras operações.
Os quatro exemplos desta seção usam tabelas que incluem as informações do título (título, ID do título, autor, preço e data de publicação). Todos os dados são mantidos com XML no titlesdb.xml. Ao estabelecer uma página para representar o conteúdo desta tabela e selecionar livros, esses exemplos seguem o método incremental. A lista de código contém o texto do corpo preto para indicar a alteração feita por uma amostra construída no exemplo anterior.
Teste de titlesdb.xml:
<sic>
<Schema ID = DocumentElement TargetNamespace =
xmlns = http://www.w3.org/1999/xmlschema
xmlns: msdata = urn: schemas-microsoft-com: xml-msdata>
<nome do elemento = tabela>
<ComplexType content = elegensonly>
<nome do elemento = title_id type = string> </element>
<nome do elemento = título tipo = string> </eleg>
<nome do elemento = AU_NAME TIPO = String> </Element>
<nome do elemento = preço msData: datatype = system.currency
Minccurs = 0
Type = string> </lement>
<Nome do elemento = PubDate Type = TimeInstant> </lement>
</Complextype>
<nique nique = titleConstraint msData: primarykey = true>
<Selector>
<field> title_id </field>
</nelique>
</Element>
</schema>
<documentElement>
<Título>
<title_id> Bu1032 </itit_id>
<title> O guia de banco de dados do executivo ocupado </title>
<Mum_Name> Marjorie Green </au_name>
<preço> 19.99 </sice>
<Pubdate> 1991-06-12T07: 00: 00 </pubdate>
</Title>
Elástico
</documentElement>
</root>
Em um aplicativo típico da Web, para obter a máxima escalabilidade e desempenho, é provável que use serviços da Web ou objetos de negócios para acessar dados. Para simplificar esses exemplos e se concentrar no uso do DataGrid em vez do acesso a dados, optamos por carregar dados de um momento em que o aplicativo é iniciado e no estado do aplicativo ASP no Global.asax Show.
Trunk de Global.asax:
public void Application_onstart () {) {)
filestream fs = nulo;
conjunto de dados ds = nulo;
tentar {
fs = new filestream (server.mappath (titlesdb.xml), filemode.open,
FileAccess.read);
ds = novo conjunto de dados ();
// carrega os dados no arquivo XML no conjunto de dados
ds.readxml (fs);
} Finalmente {
if (fs! = null) {
fs.close ();
fs = nulo;
}
}
// cchestrate o conjunto de dados em alta velocidade para o estado do aplicativo para que ele possa ser usado em uma única página
aplicação [titlesdataset] = ds;
}
DataGrid1
O DataGrid1 ilustra o uso básico do DataGrid, que explica como o controle usa o menor código de usuário para gerar uma função rica.
FIGO
Inserir do datagrid1.aspx:
<%@página de página = c# src = datagrid.cs Irtres = samais.datagridpage%>
Elástico
<Asp: datagrid runat = ID do servidor = titlesgrid>
</asp: datagrid>
O arquivo .aspx acima mostrou uma instrução sem nenhum atributo sem nenhum atributo do controle DataGrid.
DataGrid.cs:
Amostras de espaço para nome {
Elástico
Classe pública DataGridPage: página {
DataGrid protegido TitlesGrid;
Public icollection getTitlesList () {
// Retore a lista de títulos do conjunto de dados de cache de alta velocidade no estado do aplicativo.
DataSet TitlesDataSet = (DataSet) Aplicativo [TitlesDataset];
if (titlesdataset! = null) {
Retornar titlesdataset.tables [title] .DefaultView;
}
outro {
Retornar nulo;
}
}
Private void loadtitlesGrid () {) {)
// Pesquisar dados do banco de dados
ICOLLECTION TitlesList = getTitlesList ();
// Defina a fonte de dados do controle
titlesGrid.DataSource = TitlesList;
// e faça -o usar esta fonte de dados para construir seu projeto
titlesgrid.databind ();
}
Substituição protegida void sobreoad (EventArgs e) {{
base.onload (e);
if (! ispostback) {
// Veja esta página pela primeira vez
loadtitLesgrid ();
}
}
}
}
O arquivo .cs contém o código usado para esta página. Esse código é o mesmo que a função de código usada no exemplo do Datalist1. Na primeira solicitação desta página, ele abrange o método on -line para recuperar dados e definir a propriedade DataSource do controle antes de chamar o banco de dados. Isso fará com que o Datagrid crie seu projeto, que são linhas necessárias na tabela. No processo de retorno do processamento, o DataGrid criou o projeto do status (esse estado inclui o conteúdo de células salvo na última solicitação).
Este exemplo ilustra a função da propriedade AutoGeneratecolumns do controle DataGrid. O valor padrão desse atributo é verdadeiro. Quando definido como true, o Datagrid usará a reflexão para verificar sua fonte de dados e objetos e criar uma coluna para cada atributo ou campo público. Neste exemplo, o controle representa todos os campos atuais na tabela "título". Esse recurso permite que a lista do menor código de usuário gere uma lista de qualquer fonte de dados de maneira rápida e fácil.
Cada tipo de coluna automática é limitada. Este tipo de coluna converte o valor do atributo associado a ele em uma string que precisa ser usada como uma janela.
DataGrid2
DataGrid2 explica o datagrid definido pelas colunas definidas no arquivo .aspx.
Figura 5. Exemplos gerados usando a coluna especificada Datagrid
Trecho de DataGrid2.aspx:
<%@página de página = c# src = datagrid.cs Irtres = samais.datagridpage%>
Elástico
<ASP: DataGrid Runat = ID do servidor = TitlesGrid
AutoGeneratecolumns = false>
<nome poperty = colunas>
<ASP: BoundColumn headlelText = title datafield = title/>
Er
<ASP: BoundColumn headerText = Data publicada Datafield = PubDate/>
<ASP: BoundColumn headlelText = Price Datafield = Price/>
</Propriedade>
</asp: datagrid>
Este arquivo .aspx mostrou um controle de datagrid com uma coluna definida pelos usuários. Este exemplo usa os mesmos arquivos suportados por código como Datagrid1 porque nenhum código é necessário.
A propriedade AutoGenerAnerAteColumns da Datagrid está definida como fingir, de modo a impedir que o controle gere colunas automaticamente e permite que os usuários sejam responsáveis pela definição de colunas que serão representadas na tabela.
Existem muitos benefícios:
Você pode controlar a ordem das colunas. Lista na ordem de uma declaração. Por outro lado, a coluna automática é representada pela ordem recuperada pela imagem.
Você pode especificar o cabeçalho de cada coluna com a propriedade da coluna HeaderText. No exemplo anterior, o cabeçalho da etiqueta indica o nome do campo, que pode não ser apropriado. Ao usar os controles nesse modo, o Columbns também oferece outros atributos setáveis.
O tipo de coluna automática é sempre ligada. Especifique o conjunto de colunas para que o usuário possa controlar o tipo de cada coluna.
DataGrid3
O DATAGRID3 é construído no DATAGRID2 adicionando formatação e formatação visual.
Figura 6. Exemplos gerados pelo Datagrid que define os atributos de estilo e formato
Trecho de Datagrid3.aspx:
<%@página de página = c# src = datagrid.cs Irtres = samais.datagridpage%>
Elástico
<ASP: DataGrid Runat = ID do servidor = TitlesGrid
AutoGeneratecolumns = false
largura = 80%
backcolor = branco
Borderwidth = 1px BordersTyle = Solid CellPadding = 2 Cellspacing = 0
BorderColor = tan
font-name = style-size de estilo de música = 8pt>
<nome poperty = colunas>
<ASP: BoundColumn headlelText = title datafield = title/>
Er
<ASP: BoundColumn headerText = Data publicada DataField = PubDate
DataFormatString = {0: mmm aaaaa}/>
Er
DataFormatString = {0: C}>
<nome poperty = itemstyle>
<ASP: TableItemstyle Horizontalalign = Right/>
</Propriedade>
</asp: boundDcolumn>
</Propriedade>
<nome poperty = headstyle>
<ASP: TableItemstyle Backcolor = Darkred Inceolor = White
font-black = true/>
</Propriedade>
<nome poperty = itemstyle>
<ASP: TABLEITEMSTYLE ICRIÇÃO = DarkSlateBlue/>
</Propriedade>
<nome poperty = alternatingItemstyle>
<Asp: tabelaItemstyle backcolor = bege/>
</Propriedade>
</asp: datagrid>
Este arquivo .aspx mostrou a mesma instrução DATAGRID CONTROLE do anterior e define vários atributos de estilo. Isso levará a uma representação mais atraente. Ainda não há necessidade de fazer alterações no código e o uso do código suportado pelos mesmos exemplos que os exemplos anteriores.
Como é obtido do WebControl, o controle DataGrid herda atributos de estilo, como largura, backcolor, borderstyle e font.name. Além disso, o DataGrid oferece atributos como o CellPadding, que são específicos para a tabela. Esses atributos podem personalizar controles em geral.
A declaração também exibe vários conjuntos de estilos de projeto, como estilo de cabeçalhos e alternatingItemstyle. Esses estilos controlam a aparência de seus itens correspondentes. Observe que o estilo do estilo aparece neste exemplo. Os projetos alternativos são os mesmos que as perspectivas de projetos gerais, porque seus estilos são combinações de alternationItemstyle e itemstyle. Finalmente, este exemplo também explica o estilo de uma coluna específica através do texto na coluna do preço do alinhamento direito.
O DataGrid também permite formatar o conteúdo de texto em sua célula. Isso é concluído definindo o valor da propriedade DataFormatString da BoundColumn. A coluna usa seu formato para formatar o conteúdo da célula de string.format. Este atributo pode ser predefinido ou anexado a qualquer conteúdo com o tipo de formatação (como a data ou a moeda). Além disso, como a formatação considera o CultureInfo e as solicitações da página atual, ele também suporta a globalização. Se não houver um formato especificado, use o método de toques desse valor.
DataGrid4
O DataGrid4 explica como usar a seleção no DataGrid, lidando com o evento SelectedIndIndexchanged.
Figura 7. Exemplos gerados, permitindo o Datagrid contendo itens
Teste de DataGrid4.aspx:
<%@página de página = c# src = datagrid4.cs IrtHits = samais.datagrid4page%>
Elástico
<ASP: DataGrid Runat = ID do servidor = TitlesGrid
AutoGeneratecolumns = false
largura = 80%
backcolor = branco
Borderwidth = 1px BordersTyle = Solid CellPadding = 2 Cellspacing = 0
BorderColor = tan
font-name = style-size de estilo de música = 8pt
Datakeyfield = title_id
onSelectedExchanged = OnSelectExChangedesGrid>
<nome poperty = colunas>
<ASP: ButtonColumn text = Select Command = Select/>
<ASP: BoundColumn headlelText = title datafield = title/>
Er
<ASP: BoundColumn headerText = Data publicada DataField = PubDate
DataFormatString = {0: mmm aaaaa}/>
Er
DataFormatString = {0: C}>
<nome poperty = itemstyle>
<ASP: TableItemstyle Horizontalalign = Right/>
</Propriedade>
</asp: boundDcolumn>
</Propriedade>
<nome poperty = headstyle>
<ASP: TableItemstyle Backcolor = Darkred Inceolor = White
font-black = true/>
</Propriedade>
<nome poperty = itemstyle>
<ASP: TABLEITEMSTYLE ICRIÇÃO = DarkSlateBlue/>
</Propriedade>
<nome poperty = alternatingItemstyle>
<Asp: tabelaItemstyle backcolor = bege/>
</Propriedade>
<nome poperty = selectDitemstyle>
<ASP: TABLEITEMSTYLE BETCOLOR = Palegoldenrod Fonte-Bold = true/>
</Propriedade>
</asp: datagrid>
Elástico
<ASP: Rótulo Runat = ID do servidor = SelectInfolabel font-name = Song Style Font-Size = 8pt/>
No arquivo .aspx, um programa de processamento de eventos foi registrado para o evento SelectedIndexchanged Event do Datagrid. Este programa de processamento de incidentes é implementado em um arquivo suportado pelo código. Um ButtonColumn, que foi adicionado ao conjunto de colunas como "Selecionar", faz com que o Datagrid represente uma coluna adicional contendo o botão Selecionar para cada projeto. Ao mesmo tempo, o seletoItemstyle é especificado. Esse estilo é usado para distinguir visualmente os projetos. Por fim, o atributo Datakeyfield da DataGrid é especificado. Este campo será colocado na coleção DataGrid Datakeys, que será usada em arquivos com suporte de código.
DataGrid4.cs:
Amostras de espaço para nome {
Elástico
Classe pública DataGrid4Page: Página {
DataGrid protegido TitlesGrid;
Rótulo protegido SearchInfolabel;
Public icollection getTitlesList () {
// Retore a lista de títulos do conjunto de dados de cache de alta velocidade no estado do aplicativo.
DataSet TitlesDataSet = (DataSet) Aplicativo [TitlesDataset];
if (titlesdataset! = null) {
Retornar titlesdataset.tables [title] .DefaultView;
}
outro {
Retornar nulo;
}
}
Private void loadtitlesGrid () {) {)
// Pesquisar dados do banco de dados
ICOLLECTION TitlesList = getTitlesList ();
// Defina a fonte de dados do controle e redefine sua escolha,
titlesGrid.DataSource = TitlesList;
titlesGrid.SelectDindex = -1;
// e faça o controle usar esta fonte de dados para construir seu projeto
titlesgrid.databind ();
// Atualizar informações de título selecionado
UpdateSelectTitalInfo ();
}
Substituição protegida void sobreoad (EventArgs e) {{
base.onload (e);
if (! ispostback) {
// Veja esta página pela primeira vez
loadtitLesgrid ();
}
}
// Processando o evento OnSelectIndIndindExchanged do Datagrid
Void protegido onSelectedIndIndExChangedTitlesGrid (Remetente de Objeto,
EventArgs e) {
UpdateSelectTitalInfo ();
}
Private void updateSelectTitiveInfo () {{) {
// Obtenha o índice selecionado
int SelIndex = titlesGrid.SelectDindex;
String selfieid = null;
String selectInfo;
if (Selindex! = -1) {{
// Mostra o campo principal do título selecionado
Seltitleid = (String) TitlesGrid.Data [Selindex];
SeleçãoInfo = ID do título selecionado: + Seltitleid;
}
outro {
selectInfo = nenhum título está atualmente selecionado.;
}
selectInfolabel.Text = SelectInfo;
}
}
}
Este arquivo .cs contém a lógica de lidar com o evento selecionado Indexchaned e a lógica do ID do título selecionado no DataGrid. O Datagrid lida com o evento de comando, que é acionado por botões incluídos em seu projeto. Ele reconhece o comando padrão "Select", o que faz com que ele altere sua propriedade SelectedIndex e desencadeia esse incidente para alterar o código de notificar o usuário.
No processo de implementação de programas de processamento de eventos, o código de exemplo chama o método UpdateSelectTitleInfo. Este método é responsável por exibir informações sobre o título do livro selecionado. Em um esquema mais realista, esse ID pode ser usado para vincular uma página para exibir mais detalhes sobre o título selecionado.
O ID é recuperado visitando a coleção Datakeys. A coleção é definida por causa do atributo Datakeyfield. Geralmente, defina -o como a palavra -chave principal ou outros campos que podem ser identificados pela família e use essas informações como as diretrizes na consulta ou filtro de banco de dados a seguir.
Este exemplo mostra como suportar mais operações, como a seleção de objetos na fonte de dados, além de apenas objetos na fonte de dados. O DataGrid contém suporte para vários outros recursos (como classificação, paginação, editores -sites e templatecolumns). No entanto, esses recursos específicos excedem o escopo da discussão deste artigo e serão discutidos em artigos futuros.
Repetidor, Datalist ou Datagrid?
Modelos de programação pública compartilhados repetidores, dados de dados e controção de dados. Ao mesmo tempo, cada controle é projetado para se concentrar em um esquema específico. Esta seção descreve a função da hierarquia de controle e a função de cada controle, bem como um exemplo da solução típica que cada controle pode ser usado.
Como você pode ver na estrutura da classe abaixo, o repetidor é um controle pequeno e de luz. Ele herda apenas as funções da classe de controle básico, como atributos de ID e conjuntos de sub -controle. Por outro lado, o controle de dados e o controle do datagrid herdam a função WebControl, como atributos de estilo e aparência.
Figura 8. Lista -controle do controle da estrutura do nível de classe
Em termos de modelos de objetos, o controle do repetidor é o controle mais simples. É também o menor controle de ligação de dados e basicamente diferente, ou seja, não forçará nenhum layout especial da interface do usuário. O método de indicação final segue o método de geração de texto. Esse controle não fornece suporte a nenhum suporte de estilos e aparelhos de estilo e aparência. É uma excelente opção para uma solução que precisa ser totalmente controlada.
O controle do datalista é um repetidor forçado a usar o layout da coluna ou o layout do fluxo. Ele herda os atributos da aparência implementados no WebControl e adiciona outros atributos de estilo adequados para itens criados. O controle do datalista também inclui suporte para suas operações padrão do projeto (como seleção, edição e exclusão). É muito adequado para o fluxo de sequência dos projetos de nível ou vertical distribuídos em uma linha ou linha.
O controle DataGrid é forçado a usar o layout da lista ou da linha. Semelhante ao Datalist, esse controle fornece estilos e atributos de aparência. Além de selecionar e editar, o Datagrid também suporta operações avançadas na coleção de todo o projeto, como páginas e classificação. Uma das principais diferenças entre o Datagrid e o Datalist é que o Datagrid não contém nenhum atributo de modelo, ou seja, o projeto ou o não -quadro do controle DataGrid. No entanto, adicione o Templatecolumn ao DataGrid para usar o modelo em uma coluna específica.
A tabela a seguir é um resumo da função fornecida pelo controle de ligação da lista.
Função Repeater Datalist Datagrid
O modelo é (necessário) ou dentro de colunas (necessárias) (opcional)
É o layout da lista?
É o layout do fluxo
O layout do estilo da coluna de distribuição/jornal é?
Se os atributos de estilo e aparência são
Selecione se sim
Editar
É excluído?
Sem paginação
Está classificado?
Recursos relacionados
Com os exemplos do QuickStart publicados pelo Microsoft .NET Framework SDK, houve vários exemplos desses controles e exemplos que explicaram os dados de acesso a dados com XML e serviços da Web. O documento anexado ao SDK inclui os dados conceituais do tópico relevante, como a estrutura da página ASP+ e o controle do servidor e a bibliografia de referência do modelo de objeto como parte do controle desse quadro.