DetailsView Control in ASP.Net: Part 2

Introduction

In Part1 of this article series we have discussed how to display the data in DetailsView Control. We have discussed Declarative and Programmatic Databindng technique. Now in this article we will discuss how to use fields in DetailsView Control.

Using Fields with DetailsView

If we need more control over the appearance of the DetailsView, including the particular order in which columns are displayed, then we can use fields with the DetailsView control.

The DetailsView control supports exactly the same fields as the GridView control:
 
  • BoundField: Enables us to display the value of a data item as text.
  • CheckBoxField: Enables us to display the value of a data item as a check box.
  • CommandField: Enables us to display links for editing, deleting, and selecting rows.
  • ButtonField: Enables us to display the value of a data item as a button (image button, link button, or push button).
  • HyperLinkField: Enables us to display the value of a data item as a link.
  • ImageField: Enables us to display the value of a data item as an image.
  • TemplateField: Enables us to customize the appearance of a data item.

Another option is to create custom fields for the DetailsView control. We can create custom fields that work with the DetailsView control in exactly the same way as we create custom fields that work with the GridView control (we have already discussed on it earlier in GridView Control article Parts).

The page given below contains a DetailsView control that contains three BoundFields. The BoundFields display the values of the ID, TITLE, COMPANY, PRICE.

DetailView2.gif

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<
body>
    <form id="form1" runat="server">
    <div>

      <asp:DetailsView
        id="dtlProducts"
        DataSourceID="SqlDataSource1"
        AutoGenerateRows="false"
        Runat="server">
        <Fields>
        <asp:BoundField
            DataField="ID"
            HeaderText="Product Number:" />
        <asp:BoundField
            DataField="TITLE"
            HeaderText="Product Name:" />
        <asp:BoundField
            DataField="PRICE"
            DataFormatString="{0:c}"
            HtmlEncode="false"
            HeaderText="Market Price:" />
        </Fields>
    </asp:DetailsView>

        <br />
        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>"
            ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.ProviderName %>"
            SelectCommand="SELECT [ID], [TITLE], [COMPANY], [PRICE] FROM [PRO_LIST]">
        </asp:SqlDataSource>

       </div>
    </form>
</body>
</
html>

In above example DetailsView control has an AutoGenerateRows property that has the value False. When we specify fields for a DetailsView control, we include this property so that the fields do not appear more than once. Each of the BoundFields includes a HeaderText attribute that is used to specify the label for the field. In addition, the BoundField associated with the PRICE column includes a DataFormatString property that is used to format the value of the column as a currency amount. Make sure that we disabled HTML encoding by setting the HtmlEncode property to the value False when we use the DataFormatString property.

Note: Continue in Next Part.


Similar Articles