Compartilhar via


Criando modelos para o controle FormView de Servidor Web

Você pode personalizar o controle FormView adicionando modelos que permitem ao usuário exibir ou modificar os dados exibidos pelo controle.O conteúdo de cada modelo consiste de marcação, controles com expressões de ligação de dados e botões de comando que alteraram o modo do controle FormView.

Observação:

Para obter mais informações, consulte Visão geral de expressões de ligação de dados.

Exibir modelos

O modelo de vídeo primário para o controle FormView é o modelo ItemTemplate.O modelo ItemTemplate exibe dados acoplados no modo somente leitura.Os controles incluídos em um ItemTemplate são controles que somente exibem dados, como um controle Label.O modelo também pode conter botões de comando para alterar o modo do controle FormView para inserir ou editar, ou para excluir o registro atual.Você vincula os controles no modelo a dados usando uma expressão de ligação de dados que inclui o método Eval para associação de dados unidirecional, como mostrado no exemplo a seguir.

<asp:FormView ID="FormView1"
  DataSourceID="SqlDataSource1"
  DataKeyNames="ProductID"     
  RunAt="server">

  <ItemTemplate>
    <table>
      <tr><td align="right"><b>Product ID:</b></td>       <td><%# Eval("ProductID") %></td></tr>
      <tr><td align="right"><b>Product Name:</b></td>     <td><%# Eval("ProductName") %></td></tr>
      <tr><td align="right"><b>Category ID:</b></td>      <td><%# Eval("CategoryID") %></td></tr>
      <tr><td align="right"><b>Quantity Per Unit:</b></td><td><%# Eval("QuantityPerUnit") %></td></tr>
      <tr><td align="right"><b>Unit Price:</b></td>       <td><%# Eval("UnitPrice") %></td></tr>
    </table>                 
  </ItemTemplate>                   
</asp:FormView>
<asp:FormView ID="FormView1"
  DataSourceID="SqlDataSource1"
  DataKeyNames="ProductID"     
  RunAt="server">

  <ItemTemplate>
    <table>
      <tr><td align="right"><b>Product ID:</b></td>       <td><%# Eval("ProductID") %></td></tr>
      <tr><td align="right"><b>Product Name:</b></td>     <td><%# Eval("ProductName") %></td></tr>
      <tr><td align="right"><b>Category ID:</b></td>      <td><%# Eval("CategoryID") %></td></tr>
      <tr><td align="right"><b>Quantity Per Unit:</b></td><td><%# Eval("QuantityPerUnit") %></td></tr>
      <tr><td align="right"><b>Unit Price:</b></td>       <td><%# Eval("UnitPrice") %></td></tr>
    </table>                 
  </ItemTemplate>                 
</asp:FormView>

O modelo ItemTemplate pode incluir controles LinkButton que alteram o modo do controle FormView com base no valor CommandName.Um valor CommandName de New coloca o registro no modo de inserção e carrega o modelo InsertItemTemplate, que permite o usuário inserir valores para um novo registro.Você pode adicionar um botão com um valor CommandName de Edit para o modelo ItemTemplate para colocar o controle FormView em modo de edição.Um botão com um valor CommandName de Delete pode ser adicionado ao modelo ItemTemplate para permitir que os usuários excluam o registro atual a partir de fonte de dados.

Os outros modelos de exibição que você pode usar com o controle FormView são o modelo EmptyDataTemplate, que é exibido quando não há um registro atual para se vincular, e o modelo HeaderTemplate e modelo FooterTemplate, que definem o conteúdo do cabeçalho e rodapé, respectivamente.

Editar e inserir modelos

Você pode usar o modelo EditItemTemplate para permitir que os usuários modifiquem um registro existente e o modelo InsertItemTemplate para reunir os valores para um novo registro a ser inserido na fonte de dados.No modelo EditItemTemplate e InsertItemTemplate você normalmente inclue controles que tomam entrada do usuário, como controles TextBox e CheckBox, ou DropDownList.Você também pode adicionar controles para exibir dados somente leitura e botões de comando para permitir que os usuários editem o registro atual, insiram um novo registro, ou cancelem a ação atual.Você vincula os controles nos modelos EditItemTemplate e InsertItemTemplatea dados usando uma expressão de associação de dados que inclui o métodoBind para associação de dados unidirecional, como mostrado no exemplo a seguir.

<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

  InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                 SELECT @EmpID = SCOPE_IDENTITY()"
  UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName 
                   WHERE EmployeeID=@EmployeeID"
  DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"

  ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
  OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
  RunAt="server">

  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
  </SelectParameters>

  <InsertParameters>
    <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
  </InsertParameters>

</asp:sqlDataSource>
<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

  InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                 SELECT @EmpID = SCOPE_IDENTITY()"
  UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName 
                   WHERE EmployeeID=@EmployeeID"
  DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"

  ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
  OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
  RunAt="server">

  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
  </SelectParameters>

  <InsertParameters>
    <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
  </InsertParameters>

</asp:sqlDataSource>
Observação:

Quando você usa um controle ListControl como um controle DropDownList, você pode querer que o valor do controle DropDownList seja vinculado a um campo no registro atual acoplado enquanto os valores para o controle DropDownList são vinculados a uma lista separada dos valores possíveis.Nesse caso, use a expressão Bind para ligar a propriedade SelectedValue do DropDownList controle ao registro atual acoplado, e especificar o fonte de dados, propriedade DataTextField, e propriedade DataValueField do controle DropDownListpara a lista de valores possíveis.

O modelo EditItemTemplate é carregado quando os usuários clicam em um botão de comando com um valor CommandName de Edit.Você pode adicionar um botão de comando LinkButton com um CommandName de Update para tomar os valores de limite atuais e enviá-los para o controle da fonte de dados para atualização.Você pode adicionar um botão de comando LinkButton com um CommandName de Cancel para descartar os valores de limite atuais e retornar o controle FormView para o modo somente leitura e carregar o modelo ItemTemplate.

O modelo InsertItemTemplate é carregado quando os usuários clicam em um botão de comando com um valor CommandName de New.Você pode adicionar um botão de comando LinkButton com um CommandName de Insert para enviar valores para um novo registro para o controle da fonte de dados.Você pode adicionar um botão de comando LinkButton com um CommandName de Cancel para descartar os novos valores e retornar o FormView para o modo somente leitura e carregar o modelo ItemTemplate.

Para obter um exemplo de como usar um controle FormView para editar dados, consulte Modificando dados usando um controle FormView de servidor Web.

Modelo de paginação dados

No controle FormView, uma página de dados é um registro único acoplado.Se você conjunto o AllowPaging propriedade das FormView o controle para true, o FormView controle adicionará automaticamente controles de interface do usuário na paginação. Você pode personalizar do interface do usuário para paginação adicionando um modelo PagerTemplate.Para obter detalhes, consulte:Paginação no controle FormView do servidor Web.

Para obter um exemplo de um modelo PagerTemplate de um controle FormView, consulte Paginação no controle FormView do servidor Web.

Consulte também

Conceitos

Visão geral do controle do servidor da Web FormView