Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
por Scott Mitchell
Para fornecer flexibilidade, o GridView oferece o TemplateField, que renderiza usando um modelo. Um modelo pode incluir uma combinação de HTML estático, controles da Web e sintaxe de vinculação de dados. Neste tutorial, examinaremos como usar o TemplateField para obter um maior grau de personalização com o controle GridView.
Introdução
O GridView é composto por um conjunto de campos que indicam quais propriedades do DataSource devem ser incluídas na saída renderizada, juntamente com como os dados serão exibidos. O tipo de campo mais simples é o BoundField, que exibe um valor de dados como texto. Outros tipos de campo exibem os dados usando elementos HTML alternativos. O CheckBoxField, por exemplo, renderiza como uma caixa de seleção cujo estado marcado depende do valor de um campo de dados especificado; o ImageField renderiza uma imagem cuja fonte de imagem é baseada em um campo de dados especificado. Hiperlinks e botões cujo estado depende de um valor de campo de dados subjacente podem ser renderizados usando os tipos de campo HyperLinkField e ButtonField.
Embora os tipos de campo CheckBoxField, ImageField, HyperLinkField e ButtonField permitam uma exibição alternativa dos dados, eles ainda são bastante limitados em relação à formatação. Um CheckBoxField só pode exibir uma única caixa de seleção, enquanto um ImageField só pode exibir uma única imagem. E se um campo específico precisar exibir algum texto, uma caixa de seleção e uma imagem, todos baseados em valores de campo de dados diferentes? E se quiséssemos exibir os dados usando um controle da Web diferente de CheckBox, Image, HyperLink ou Button? Além disso, o BoundField limita sua exibição a um único campo de dados. E se quiséssemos mostrar dois ou mais valores de campo de dados em uma única coluna GridView?
Para acomodar esse nível de flexibilidade, o GridView oferece o TemplateField, que renderiza usando um modelo. Um modelo pode incluir uma combinação de HTML estático, controles da Web e sintaxe de vinculação de dados. Além disso, o TemplateField tem uma variedade de modelos que podem ser usados para personalizar a renderização para diferentes situações. Por exemplo, o ItemTemplate é usado por padrão para renderizar a célula para cada linha, mas o EditItemTemplate modelo pode ser usado para personalizar a interface ao editar dados.
Neste tutorial, examinaremos como usar o TemplateField para obter um maior grau de personalização com o controle GridView. No tutorial anterior , vimos como personalizar a formatação com base nos dados subjacentes usando os DataBound manipuladores de eventos e RowDataBound . Outra maneira de personalizar a formatação com base nos dados subjacentes é chamando métodos de formatação de dentro de um modelo. Veremos essa técnica neste tutorial também.
Para este tutorial, usaremos TemplateFields para personalizar a aparência de uma lista de funcionários. Especificamente, listaremos todos os funcionários, mas exibiremos o nome e o sobrenome do funcionário em uma coluna, sua data de contratação em um controle de Calendário e uma coluna de status que indica quantos dias ele esteve empregado na empresa.
Figura 1: Três TemplateFields são usados para personalizar a exibição (Clique para visualizar a imagem em tamanho real)
Etapa 1: Vinculando os dados ao GridView
Em cenários de relatório em que você precisa usar TemplateFields para personalizar a aparência, acho mais fácil começar criando um controle GridView que contém apenas BoundFields primeiro e, em seguida, adicionar novos TemplateFields ou converter os BoundFields existentes em TemplateFields conforme necessário. Portanto, vamos começar este tutorial adicionando um GridView à página por meio do Designer e vinculando-o a um ObjectDataSource que retorna a lista de funcionários. Esses passos criarão uma GridView com campos vinculados para cada um dos campos do funcionário.
Abra a página GridViewTemplateField.aspx e arraste um GridView da Caixa de Ferramentas para o Designer. Na tag inteligente do GridView, escolha adicionar um novo controlo ObjectDataSource que invoque o método EmployeesBLL da classe GetEmployees().
Figura 2: Adicionar um novo controle ObjectDataSource que invoca o método (GetEmployees() imagem em tamanho real)
Vincular o GridView dessa maneira adicionará automaticamente um BoundField para cada uma das propriedades do funcionário: EmployeeID, LastName, FirstName, Title, HireDate, ReportsTo, e Country. Para este relatório, não nos vamos preocupar em exibir as propriedades EmployeeID, ReportsTo ou Country. Para remover esses BoundFields você pode:
- Para usar a caixa de diálogo Campos, clique na ligação "Editar colunas" na etiqueta inteligente do GridView para abrir esta caixa de diálogo. Em seguida, selecione BoundFields na lista inferior esquerda e clique no botão X vermelho para remover o BoundField.
- Edite manualmente a sintaxe declarativa do GridView na visualização Source, exclua o
<asp:BoundField>elemento para o BoundField que você deseja remover.
Depois de remover o EmployeeID, ReportsTo, e Country BoundFields, a marcação do seu GridView deve ter a seguinte aparência:
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" DataKeyNames="EmployeeID"
DataSourceID="ObjectDataSource1">
<Columns>
<asp:BoundField DataField="LastName" HeaderText="LastName"
SortExpression="LastName" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName"
SortExpression="FirstName" />
<asp:BoundField DataField="Title" HeaderText="Title"
SortExpression="Title" />
<asp:BoundField DataField="HireDate" HeaderText="HireDate"
SortExpression="HireDate" />
</Columns>
</asp:GridView>
Reserve um momento para ver o nosso progresso em um navegador. Neste ponto, você deve ver uma tabela com um registro para cada funcionário e quatro colunas: uma para o sobrenome do funcionário, uma para seu primeiro nome, uma para seu título e uma para sua data de contratação.
Figura 3: Os LastName campos, FirstName campos, Title, e HireDate são exibidos para cada funcionário (Clique para visualizar a imagem em tamanho real)
Etapa 2: Exibindo o nome e o sobrenome em uma única coluna
Atualmente, o nome e o sobrenome de cada funcionário são exibidos em uma coluna separada. Em vez disso, pode ser bom combiná-los em uma única coluna. Para conseguir isso, precisamos usar um TemplateField. Podemos adicionar um novo TemplateField, adicionar a ele a marcação necessária e a sintaxe de vinculação de dados e, em seguida, excluir o FirstName e LastName BoundFields, ou podemos converter o FirstName BoundField em um TemplateField, editar o TemplateField para incluir o LastName valor e, em seguida, remover o LastName BoundField.
Ambas as abordagens resultam no mesmo resultado, mas pessoalmente eu gosto de converter BoundFields para TemplateFields quando possível porque a conversão adiciona automaticamente um ItemTemplate e EditItemTemplate com controles Web e sintaxe de vinculação de dados para replicar a aparência e funcionalidade do BoundField. O benefício é que precisaremos fazer menos trabalho com o TemplateField, pois o processo de conversão terá realizado parte do trabalho para nós.
Para converter um BoundField existente num TemplateField, clique no link Editar Colunas do smart tag do GridView, o que abrirá a caixa de diálogo Campos. Selecione o BoundField para converter na lista no canto inferior esquerdo e, em seguida, clique no link "Converter este campo em um TemplateField" no canto inferior direito.
Figura 4: Converter um BoundField em um TemplateField da caixa de diálogo Fields (Clique para visualizar a imagem em tamanho normal)
Vá em frente e converta o FirstName BoundField em um TemplateField. Após essa alteração, não há diferença percetiva no Designer. Isso ocorre porque converter o BoundField em um TemplateField cria um TemplateField que mantém a aparência do BoundField. Apesar de não haver nenhuma diferença visual neste ponto no Designer, esse processo de conversão substituiu a sintaxe declarativa do BoundField - <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> - com a seguinte sintaxe TemplateField:
<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Como pode ver, o TemplateField consiste em dois modelos: um ItemTemplate que tem um Label cuja propriedade Text é definida para o valor do campo de dados FirstName, e um EditItemTemplate com um controle de TextBox cuja propriedade Text também está definida para o campo de dados FirstName. A sintaxe de vinculação de dados - <%# Bind("fieldName") %> - indica que o campo fieldName de dados está vinculado à propriedade de controle da Web especificada.
Para adicionar o valor do LastName campo de dados a este TemplateField, precisamos adicionar outro controle Label Web no ItemTemplate e vincular sua Text propriedade ao LastName. Isto pode ser feito manualmente ou através do Designer. Para fazê-lo manualmente, basta adicionar a sintaxe declarativa apropriada ao ItemTemplate:
<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:Label>
<asp:Label ID="Label2" runat="server"
Text='<%# Bind("LastName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Para adicioná-lo através do Designer, clique no link Editar modelos na etiqueta inteligente do GridView. Isso exibirá a interface de edição de modelo do GridView. Na tag inteligente desta interface está uma lista dos templates no GridView. Como temos apenas um TemplateField neste momento, os únicos modelos listados na lista suspensa são os modelos para o FirstName TemplateField junto com o EmptyDataTemplate e PagerTemplate. O EmptyDataTemplate modelo, se especificado, é usado para renderizar a saída do GridView se não houver resultados nos dados vinculados ao GridView, o PagerTemplate, se especificado, é usado para renderizar a interface de paginação para um GridView que suporta paginação.
Figura 5: Os modelos do GridView podem ser editados através do designer (Clique para visualizar a imagem em tamanho real)
Para também exibir o LastName no TemplateField FirstName, arraste o controle Label da Toolbox para o FirstName no TemplateField ItemTemplate na interface de edição de modelo do GridView.
Figura 6: Adicionar um controle Web Label ao ItemTemplate do TemplateField (FirstName imagem em tamanho real)
Neste ponto, o controle Web Label adicionado ao TemplateField tem sua Text propriedade definida como "Label". Precisamos alterar isso para que essa propriedade seja vinculada ao valor do campo de LastName dados. Para fazer isso, clique na etiqueta inteligente do controle Label e escolha a opção Editar Vínculos de Dados.
Figura 7: Escolha a opção Editar Ligações de Dados na Etiqueta Inteligente do rótulo (Clique para visualizar a imagem em tamanho real)
Isso abrirá a caixa de diálogo DataBindings. A partir daqui, pode selecionar a propriedade para participar da ligação de dados na lista à esquerda e escolher o campo ao qual ligar os dados no menu suspenso à direita. Escolha a Text propriedade à esquerda e o LastName campo à direita e clique em OK.
Figura 8: Vincular a Text propriedade ao campo de dados (LastName imagem em tamanho real)
Observação
A caixa de diálogo DataBindings permite que você indique se deseja executar a vinculação de dados bidirecional. Se você deixar isso desmarcado, a sintaxe <%# Eval("LastName")%> de vinculação de dados será usada em vez de <%# Bind("LastName")%>. Qualquer uma das abordagens é boa para este tutorial. A vinculação de dados bidirecional torna-se importante ao inserir e editar dados. Para simplesmente exibir dados, no entanto, qualquer abordagem funcionará igualmente bem. Discutiremos a vinculação de dados bidirecional em detalhes em tutoriais futuros.
Reserve um momento para visualizar esta página através de um navegador. Como se pode ver, o GridView ainda inclui quatro colunas; no entanto, a coluna FirstName agora lista tanto os valores dos campos de dados FirstName como LastName.
Figura 9: Tanto os valores de FirstName quanto de LastName são mostrados numa única coluna (Clique para visualizar a imagem em tamanho real)
Para concluir esta primeira etapa, remova o LastName BoundField e renomeie a FirstName propriedade do HeaderText TemplateField para "Name". Após essas alterações, a marcação declarativa do GridView deve ter a seguinte aparência:
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" DataKeyNames="EmployeeID"
DataSourceID="ObjectDataSource1">
<Columns>
<asp:TemplateField HeaderText="Name" SortExpression="FirstName">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:Label>
<asp:Label ID="Label2" runat="server"
Text='<%# Eval("LastName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Title" HeaderText="Title"
SortExpression="" Title" />
<asp:BoundField DataField="HireDate" HeaderText="
HireDate" SortExpression="" HireDate" />
</Columns>
</asp:GridView>
Figura 10: Nome e sobrenome de cada funcionário são exibidos em uma coluna (Clique para visualizar a imagem em tamanho real)
Etapa 3: Usando o controle de calendário para exibir oHiredDatecampo
Exibir um valor de campo de dados como texto em um GridView é tão simples quanto usar um BoundField. Para determinados cenários, no entanto, os dados são melhor expressos usando um controle da Web específico em vez de apenas texto. Essa personalização da exibição de dados é possível com TemplateFields. Por exemplo, em vez de exibir a data de contratação do funcionário como texto, poderíamos mostrar um calendário (usando o controle Calendário) com a data de contratação realçada.
Para fazer isso, comece convertendo o HiredDate BoundField em um TemplateField. Basta acessar o elemento "etiqueta inteligente" do GridView e clicar no link Editar Colunas, isso irá abrir a caixa de diálogo Campos. Selecione o HiredDate BoundField e clique em "Converter este campo em um TemplateField".
Figura 11: Converter o BoundField em um TemplateField (HiredDate imagem em tamanho normal)
Como vimos na Etapa 2, isto irá substituir o BoundField por um TemplateField que contém componentes ItemTemplate e EditItemTemplate com um Label e TextBox, cujas Text propriedades são associadas ao HiredDate valor, usando a sintaxe de vinculação de dados <%# Bind("HiredDate")%>.
Para substituir o texto por um controle Calendar, edite o modelo removendo o Label e adicionando um controle Calendar. No Designer, selecione Editar Modelos a partir da marca inteligente do GridView e escolha o HireDate TemplateField na lista suspensa ItemTemplate. Em seguida, exclua o controle Label e arraste um controle Calendar da Toolbox para a interface de edição do modelo.
Figura 12: Adicionar um controle de calendário ao TemplateField HireDate (ItemTemplate imagem em tamanho real)
Neste ponto, cada linha no GridView conterá um controle Calendar em seu HiredDate TemplateField. No entanto, o valor real HiredDate do funcionário não é definido em nenhum lugar no controle de calendário, causando que cada controle de calendário mostre por padrão o mês e a data atuais. Para corrigir isso, precisamos atribuir as propriedades HiredDateSelectedDate e VisibleDate de cada funcionário ao controle Calendar.
Na etiqueta inteligente do controlo Calendar, escolha Editar Ligações de Dados. Em seguida, vincule ambas as propriedades SelectedDate e VisibleDate ao campo de dados HiredDate.
Figura 13: Vincular as propriedades SelectedDate e VisibleDate ao campo de dados HiredDate (Clique para visualizar a imagem em tamanho real)
Observação
A data selecionada do controle Calendar não precisa necessariamente estar visível. Por exemplo, um calendário pode ter 1 de agostode 1999 como a data selecionada, mas mostrar o mês e o ano atuais. A data selecionada e a data visível são especificadas pelas propriedades SelectedDate e VisibleDate do controlo Calendar. Como queremos selecionar o HiredDate do funcionário e garantir que ele seja mostrado, precisamos vincular ambas as propriedades ao campo de dados HireDate.
Ao visualizar a página em um navegador, o calendário agora mostra o mês da data de contratação do funcionário e seleciona essa data específica.
Figura 14: O funcionário HiredDate é mostrado no controle de calendário (Clique para visualizar a imagem em tamanho real)
Observação
Ao contrário de todos os exemplos que vimos até agora, para este tutorial não definimos EnableViewState a propriedade para False este GridView. A razão para essa decisão é porque clicar nas datas do controle Calendário causa um postback, definindo a data selecionada do Calendário para a data que acabou de clicar. No entanto, se o estado de exibição do GridView estiver desabilitado, em cada postback, os dados do GridView serão redirecionados para sua fonte de dados subjacente, o que fará com que a data selecionada do Calendário seja definida de volta para a do funcionário HireDate, substituindo a data escolhida pelo usuário.
Para este tutorial, não faz sentido esta discussão, uma vez que o usuário não é capaz de atualizar o HireDate do funcionário. Provavelmente seria melhor configurar o controle Calendar para que suas datas não sejam selecionáveis. Independentemente disso, este tutorial mostra que, em algumas circunstâncias, o estado de exibição deve ser habilitado para fornecer determinadas funcionalidades.
Etapa 4: Mostrando o número de dias que o funcionário trabalhou para a empresa
Até agora vimos duas aplicações de TemplateFields:
- Combinando dois ou mais valores de campo de dados em uma coluna e
- Expressando um valor de campo de dados usando um controle da Web em vez de texto
Um terceiro uso de TemplateFields é na exibição de metadados sobre os dados subjacentes do GridView. Além de mostrar as datas de contratação dos funcionários, por exemplo, também podemos querer ter uma coluna que exiba quantos dias totais eles estiveram no trabalho.
Ainda outro uso de TemplateFields surge em cenários em que os dados subjacentes precisam ser exibidos de forma diferente no relatório da página da Web do que no formato armazenado no banco de dados. Imagine que a Employees tabela tinha um Gender campo que armazenava o caractere M ou F para indicar o sexo do funcionário. Ao exibir essas informações em uma página da web, podemos querer mostrar o gênero como "Masculino" ou "Feminino", em vez de apenas "M" ou "F".
Ambos os cenários podem ser manipulados criando um método de formatação na classe code-behind da página ASP.NET (ou em uma biblioteca de classes separada, implementada como um Shared método) que é invocada a partir do modelo. Esse método de formatação é invocado a partir do modelo usando a mesma sintaxe de vinculação de dados vista anteriormente. O método de formatação pode receber qualquer número de parâmetros, mas deve retornar uma cadeia de caracteres. Essa cadeia de caracteres retornada é o HTML que é injetado no modelo.
Para ilustrar esse conceito, vamos aumentar nosso tutorial para mostrar uma coluna que lista o número total de dias que um funcionário esteve no trabalho. Esse método de formatação receberá um Northwind.EmployeesRow objeto e retornará o número de dias em que o funcionário foi empregado como uma cadeia de caracteres. Esse método pode ser adicionado à classe code-behind da página ASP.NET, mas deve ser marcado como Protected ou Public para ser acessível a partir do modelo.
Protected Function DisplayDaysOnJob(employee As Northwind.EmployeesRow) As String
' Make sure HiredDate is not NULL... if so, return "Unknown"
If employee.IsHireDateNull() Then
Return "Unknown"
Else
' Returns the number of days between the current
' date/time and HireDate
Dim ts As TimeSpan = DateTime.Now.Subtract(employee.HireDate)
Return ts.Days.ToString("#,##0")
End If
End Function
Como o campo HiredDate pode conter valores NULL de banco de dados, devemos primeiro garantir que não haja valor NULL antes de prosseguir com o cálculo. Se o HiredDate valor for NULL, simplesmente retornamos a string "Desconhecido"; se não for NULL, calculamos a diferença entre a hora atual e o HiredDate valor e retornamos o número de dias.
Para utilizar esse método, precisamos invocá-lo de um TemplateField no GridView usando a sintaxe de vinculação de dados. Comece adicionando um novo TemplateField ao GridView clicando no link Editar Colunas na marca inteligente do GridView e adicionando um novo TemplateField.
Figura 15: Adicionar um novo TemplateField ao GridView (Clique para visualizar a imagem em tamanho real)
Defina a propriedade do novo HeaderText TemplateField como "Days on the Job" e a propriedade de ItemStyle de HorizontalAlign como Center. Para chamar o DisplayDaysOnJob método do modelo, adicione um ItemTemplate e use a seguinte sintaxe de vinculação de dados:
<%# DisplayDaysOnJob(CType(CType(Container.DataItem, DataRowView).Row,
Northwind.EmployeesRow)) %>
Container.DataItem Retorna um DataRowView objeto correspondente ao DataSource registro vinculado ao GridViewRow. Sua Row propriedade retorna o strongly-typed Northwind.EmployeesRow, que é passado para o DisplayDaysOnJob método. Essa sintaxe de vinculação de dados pode aparecer diretamente na ItemTemplate (conforme mostrado na sintaxe declarativa abaixo) ou pode ser atribuída à Text propriedade de um controle Web Label.
Observação
Alternativamente, em vez de passar uma instância de EmployeesRow, poderíamos simplesmente passar o valor HireDate utilizando <%# DisplayDaysOnJob(Eval("HireDate")) %>. No entanto, o Eval método retorna um Object, então teríamos que alterar nossa DisplayDaysOnJob assinatura de método para aceitar um parâmetro de entrada do tipo Object, em vez disso. Não podemos lançar cegamente a Eval("HireDate") invocação para um DateTime porque a HireDate coluna na Employees tabela pode conter NULL valores. Portanto, precisaríamos aceitar um Object como o parâmetro de entrada para o DisplayDaysOnJob método, verificar se ele tinha um valor de banco de dados NULL (o que pode ser feito usando Convert.IsDBNull(objectToCheck)) e, em seguida, proceder de acordo.
Devido a essas sutilezas, optei por passar a instância inteira de EmployeesRow. No próximo tutorial, veremos um exemplo mais adequado para usar a Eval("columnName") sintaxe para passar um parâmetro de entrada para um método de formatação.
A seguir, a sintaxe declarativa para o nosso GridView é apresentada após o TemplateField ter sido adicionado e o método DisplayDaysOnJob chamado a partir do ItemTemplate.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="EmployeeID" DataSourceID="ObjectDataSource1">
<Columns>
<asp:TemplateField HeaderText="Name"
SortExpression="FirstName">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:Label>
<asp:Label ID="Label2" runat="server"
Text='<%# Eval("LastName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Title" HeaderText="" Title"
SortExpression="Title" />
<asp:TemplateField HeaderText="HireDate" SortExpression="
HireDate">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server"
Text='<%# Bind("HireDate") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Calendar ID="Calendar1" runat="server"
SelectedDate='<%# Bind("HireDate") %>'
VisibleDate='<%# Eval("HireDate") %>'>
</asp:Calendar>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Days On The Job">
<ItemTemplate>
<%# DisplayDaysOnJob(CType(CType(Container.DataItem, DataRowView).Row,
Northwind.EmployeesRow)) %>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
</Columns>
</asp:GridView>
A Figura 16 mostra o tutorial concluído, quando visualizado através de um navegador.
Figura 16: O número de dias que o funcionário esteve no trabalho é exibido (Clique para visualizar a imagem em tamanho real)
Resumo
O TemplateField no controle GridView permite um maior grau de flexibilidade na exibição de dados do que está disponível com os outros controles de campo. TemplateFields são ideais para situações em que:
- Vários campos de dados precisam ser exibidos em uma coluna GridView
- Os dados são melhor expressos usando um controle da Web em vez de texto sem formatação
- A saída depende dos dados subjacentes, como a exibição de metadados ou a reformatação dos dados
Além de personalizar a exibição de dados, TemplateFields também são usados para personalizar as interfaces de usuário usadas para editar e inserir dados, como veremos em tutoriais futuros.
Os próximos dois tutoriais continuam explorando modelos, começando com uma olhada no uso de TemplateFields em um DetailsView. Em seguida, voltaremos para o FormView, que usa modelos em vez de campos para fornecer maior flexibilidade no layout e na estrutura dos dados.
Feliz Programação!
Sobre o Autor
Scott Mitchell, autor de sete livros sobre ASP/ASP.NET e fundador da 4GuysFromRolla.com, trabalha com tecnologias Web da Microsoft desde 1998. Scott trabalha como consultor, formador e escritor independente. Seu último livro é Sams Teach Yourself ASP.NET 2.0 in 24 Hours. Ele pode ser contatado em mitchell@4GuysFromRolla.com.
Um agradecimento especial a
Esta série de tutoriais foi revisada por muitos revisores úteis. O revisor principal deste tutorial foi Dan Jagers. Interessado em rever meus próximos artigos do MSDN? Se for o caso, envie-me uma mensagem para mitchell@4GuysFromRolla.com.