BoundColumn.DataFormatString Eigenschap

Definitie

Hiermee haalt u de tekenreeks op waarmee de weergave-indeling voor items in de kolom wordt opgegeven.

public:
 virtual property System::String ^ DataFormatString { System::String ^ get(); void set(System::String ^ value); };
public virtual string DataFormatString { get; set; }
member this.DataFormatString : string with get, set
Public Overridable Property DataFormatString As String

Waarde van eigenschap

Een opmaaktekenreeks die de weergaveopmaak van items in de kolom aangeeft. De standaardwaarde is Empty.

Voorbeelden

In het volgende voorbeeld ziet u hoe u de DataFormatString eigenschap gebruikt om verschillende indelingen op te geven voor de kolommen in het DataGrid besturingselement. De Qty kolom is opgemaakt als een geheel getal, de Price kolom wordt opgemaakt als valuta, de Weight kolom wordt opgemaakt als een decimaal getal en de Expires kolom is opgemaakt als een korte datum- en tijdtekenreeks.


<%@ Page language="c#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Globalization" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>BoundColumn Example</title>
    </head>
       <script runat="server">
        // The Cart and CartView objects temporarily store the data source
        // for the DataGrid control while the page is being processed.
        DataTable Cart;
        DataView CartView;   
 
        void Page_Load(Object sender, EventArgs e) 
        {
            // With a database, use a select query to retrieve the data. 
            // Because the data source in this example is an in-memory 
            // DataTable, retrieve the data from session state if it exists; 
            // otherwise, create the data source.
            GetSource();

            // The DataGrid control maintains state between posts to the 
            // server; therefore it only needs to be bound to a data source 
            // the first time the page is loaded or when the data source 
            // is updated.
            if (!IsPostBack)
            {
                BindGrid();
            }
        }
 
        void ItemsGrid_Edit(Object sender, DataGridCommandEventArgs e) 
        {
            // Set the EditItemIndex property to the index of the item 
            // clicked in the DataGrid control to enable editing for that
            // item. Be sure to rebind the DateGrid to the data source 
            // to refresh the control.
            ItemsGrid.EditItemIndex = e.Item.ItemIndex;
            BindGrid();
        }
 
        void ItemsGrid_Cancel(Object sender, DataGridCommandEventArgs e) 
        {
            // Set the EditItemIndex property to -1 to exit editing mode.  
            // Be sure to rebind the DateGrid to the data source to 
            // refresh the control.
            ItemsGrid.EditItemIndex = -1;
            BindGrid();
        }
 
        void ItemsGrid_Update(Object sender, DataGridCommandEventArgs e) 
        {
            // Retrieve the updated values.
            // For bound columns, the edited value is stored in a TextBox.
            // The TextBox is the 0th control in a cell's Controls collection.
            // Each cell in the Cells collection of a DataGrid item represents
            // a column in the DataGrid control.
            DataGridItem updateItem = e.Item;

            TextBox qtyText = (TextBox)updateItem.Cells[2].Controls[0];
            TextBox priceText = (TextBox)updateItem.Cells[3].Controls[0];
            
            try {
                // Try to parse the updated values from the input text.
                Int32 newQty;
                Decimal newPrice;
            
                newQty = Int32.Parse(qtyText.Text, NumberStyles.Number);
                newPrice = Decimal.Parse(priceText.Text, NumberStyles.Currency);

                // Get the item cell value - "Item 1", "Item 2", etc.
                // For read-only columns, the value is stored in the cell text.
                String item = updateItem.Cells[1].Text;
       
                // With a database, use an update command to update the data. 
                // Because the data source in this example is an in-memory
                // DataTable, delete the old row and replace it with a new one.
    
                // Filter on the updated item, remove it,
                // then clear the row filter.
                CartView.RowFilter = "Item='" + item + "'";
                if (CartView.Count > 0)
                {
                    CartView.Delete(0);
                }
                CartView.RowFilter = "";
 
                // Add the updated entry for the item.
                DataRow dr = Cart.NewRow();
                dr["Item"] = item;
                dr["Qty"] = newQty;
                dr["Price"] = newPrice;
                dr["Weight"] = updateItem.Cells[4].Text;
                dr["Expires"] = updateItem.Cells[5].Text;
            
                Cart.Rows.Add(dr);
            }
            catch (System.FormatException)
            {
                // If parsing the price or quantity caused an 
                // exception, then leave edit mode without
                // changing any cell values.
            }

            // Set the EditItemIndex property to -1 to exit editing mode.  
            // Be sure to rebind the DataGrid to the data source to refresh
            // the control.
            ItemsGrid.EditItemIndex = -1;
            BindGrid();
        }
 
        void BindGrid() 
        {
            // Set the data source and bind to the Data Grid control.
            ItemsGrid.DataSource = CartView;
            ItemsGrid.DataBind();
        }

        void GetSource()
        {
            // For this example, the data source is a DataTable that is 
            // stored in session state.
            // If the data source does not exist, create it; otherwise, 
            // load the data.
            
            if (Session["ShoppingCart"] == null) 
            {     
                Cart = new DataTable();
                InitSource();
            } 
            else
            {
                // Retrieve the sample data from session state.
                Cart = (DataTable)Session["ShoppingCart"];
            }         
 
            // Create a DataView and specify the field to sort by.
            CartView = new DataView(Cart);
            CartView.Sort="Item";

            return;
        }
        
        void InitSource()
        {
            // Create the sample data.
 
            // Define the columns of the table.
            Cart.Columns.Add(new DataColumn("Qty", typeof(Int32)));
            Cart.Columns.Add(new DataColumn("Item", typeof(String)));
            Cart.Columns.Add(new DataColumn("Price", typeof(Decimal)));
            Cart.Columns.Add(new DataColumn("Weight", typeof(Decimal)));
            Cart.Columns.Add(new DataColumn("Expires", typeof(DateTime)));

            // Store the table in session state to persist its values 
            // between posts to the server.
            Session["ShoppingCart"] = Cart;
            
            // Populate the DataTable with sample data.
            DataRow dr;  

            for (int i = 1; i <= 4; i++) 
            {
                dr = Cart.NewRow();
                dr["Qty"] = i % 2 + 1;
                dr["Item"] = "Item " + i.ToString();
                dr["Price"] = (0.50 * (i + 1));
                dr["Weight"] = 5.0;
                dr["Expires"] = DateTime.Now + TimeSpan.FromDays(7);
                Cart.Rows.Add(dr);
            }
        }
        </script>
    <body>
        <form runat="server" id="form1">
            <h3>BoundColumn DataFormatString Example</h3>
            <asp:DataGrid id="ItemsGrid" 
                BorderColor="black" BorderWidth="1" CellPadding="3"
                OnEditCommand="ItemsGrid_Edit" OnCancelCommand="ItemsGrid_Cancel" 
                OnUpdateCommand="ItemsGrid_Update" AutoGenerateColumns="false"
                runat="server" >

                <HeaderStyle backcolor="#aaaadd"></HeaderStyle>

                <Columns>
                    <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" 
                         UpdateText="Update" HeaderText="Edit Command Column">
                        <ItemStyle Wrap="False"></ItemStyle>
                        <HeaderStyle wrap="false"></HeaderStyle>
                    </asp:EditCommandColumn>

                    <asp:BoundColumn HeaderText="Item" DataField="Item" 
                                     ReadOnly="True" />

                    <asp:BoundColumn HeaderText="Quantity" DataField="Qty" 
                                     DataFormatString="{0:N0}"/>

                    <asp:BoundColumn HeaderText="Price" DataField="Price"
                                     DataFormatString="{0:c}" />

                    <asp:BoundColumn HeaderText="Weight" DataField="Weight" 
                                     ReadOnly="True" DataFormatString="{0:F3}" />

                    <asp:BoundColumn HeaderText="Expires" DataField="Expires" 
                                     ReadOnly="True" DataFormatString="{0:g}" />

                </Columns>
            </asp:DataGrid>
        </form>
    </body>
</html>

<%@ Page language="VB" AutoEventWireup="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Globalization" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>BoundColumn Example</title>
    </head>
    <script runat="server">
  
       ' The Cart and CartView objects temporarily store the data source 
       ' for the DataGrid control while the page is being processed.
       Dim Cart As DataTable
       Dim CartView As DataView   
 
       Sub Page_Load(sender as Object, e As EventArgs) 
 
          ' With a database, use a select query to retrieve the data. 
          ' Because the data source in this example is an in-memory 
          ' DataTable, retrieve the data from session state if it exists; 
          ' otherwise, create the data source.
          GetSource()

          ' The DataGrid control maintains state between posts to the 
          ' server; therefore it only needs to be bound to a data source 
          ' the first time the page is loaded or when the data source 
          ' is updated.
          If Not IsPostBack Then

             BindGrid()

          End If
                   
       End Sub
 
       Sub ItemsGrid_Edit(sender As Object, e As DataGridCommandEventArgs) 
 
          ' Set the EditItemIndex property to the index of the item 
          ' clicked in the DataGrid control to enable editing for that
          ' item. Be sure to rebind the DateGrid to the data source 
          ' to refresh the control.
          ItemsGrid.EditItemIndex = e.Item.ItemIndex
          BindGrid()
 
       End Sub
  
       Sub ItemsGrid_Cancel(sender As Object, e As DataGridCommandEventArgs) 
 
          ' Set the EditItemIndex property to -1 to exit editing mode.  
          ' Be sure to rebind the DateGrid to the data source to 
          ' refresh the control.
          ItemsGrid.EditItemIndex = -1
          BindGrid()
 
       End Sub
  
       Sub ItemsGrid_Update(sender As Object, e As DataGridCommandEventArgs) 
 
          ' Retrieve the updated values.
          ' For bound columns, the edited value is stored in a TextBox.
          ' The TextBox is the 0th control in a cell's Controls collection.
          ' Each cell in the Cells collection of a DataGrid item represents
          ' a column in the DataGrid control.
          Dim updateItem As DataGridItem
             updateItem = e.Item
 
          Dim qtyText As TextBox = CType(e.Item.Cells(2).Controls(0), TextBox)
          Dim priceText As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox)
 
          Try 
              ' Try to parse the updated values from the input text.
              Dim newQty As Int32
              Dim newPrice As Decimal
             
              newQty = Int32.Parse(qtyText.Text, NumberStyles.Number)
              newPrice = Decimal.Parse(priceText.Text, NumberStyles.Currency)
 
              ' Get the item cell value - "Item 1", "Item 2", etc.
              ' For read-only columns, the value is stored in the cell text.
              Dim item As String = updateItem.Cells(1).Text
         
  
              ' With a database, use an update command to update the data. Because 
              ' the data source in this example is an in-memory DataTable, delete 
              ' the old row and replace it with a new one.
 
              ' Remove the old entry and clear the row filter.
              CartView.RowFilter = "Item='" & item & "'"
              If CartView.Count > 0 Then
             
                  CartView.Delete(0)
          
              End If
 
              CartView.RowFilter = ""
  
              ' Add the new entry.
              Dim dr As DataRow
              dr = Cart.NewRow()
 
              dr("Item") = item
              dr("Qty") = newQty
              dr("Price") = newPrice
              dr("Weight") = updateItem.Cells(4).Text
              dr("Expires") = updateItem.Cells(5).Text
              

              Cart.Rows.Add(dr)
          Catch ex As System.FormatException

             ' If parsing the price or quantity caused an 
             ' exception, then leave edit mode without
             ' changing any cell values.
          End Try
 
          ' Set the EditItemIndex property to -1 to exit editing mode. 
          ' Be sure to rebind the DateGrid to the data source to refresh
          ' the control.
          ItemsGrid.EditItemIndex = -1
          BindGrid()

       End Sub
 
       Sub BindGrid() 
       
          ' Set the data source and bind to the Data Grid control.
          ItemsGrid.DataSource = CartView
          ItemsGrid.DataBind()
 
       End Sub
 
       Sub GetSource()
 
          ' For this example, the data source will be a DataTable that is
          ' stored in session state.
          ' If the data source does not exist, create it; otherwise, 
          ' load the data.
          If Session("ShoppingCart") Is Nothing Then 
 
              Cart = New DataTable
              InitSource()
 
          Else
 
             ' Retrieve the sample data from session state.
             Cart = CType(Session("ShoppingCart"), DataTable)
 
          End If         
  
          ' Create a DataView and specify the field to sort by.
          CartView = New DataView(Cart)
          CartView.Sort="Item"
 
          Return
 
       End Sub
 
       Sub InitSource()
 
           ' Create the sample data.
  
           ' Define the columns of the table.
            Cart.Columns.Add(New DataColumn("Qty", GetType(System.Int32)))
            Cart.Columns.Add(New DataColumn("Item", GetType(System.String)))
            Cart.Columns.Add(New DataColumn("Price", GetType(System.Decimal)))
            Cart.Columns.Add(New DataColumn("Weight", GetType(System.Decimal)))
            Cart.Columns.Add(New DataColumn("Expires", GetType(System.DateTime)))

           ' Store the table in session state to persist its values 
           ' between posts to the server.
           Session("ShoppingCart") = Cart
             
           ' Populate the DataTable with sample data.
           ' The generated table row data look like this:

           Dim dr As DataRow
           Dim i As Integer

           For i = 1 to 4 
          
               dr = Cart.NewRow()
               dr("Qty") = i Mod 2 + 1
               dr("Item") = "Item " + i.ToString()
               dr("Price") = (0.5 * (i + 1))
               dr("Weight") = 5.0
               dr("Expires") = DateTime.Now + TimeSpan.FromDays(7)
               Cart.Rows.Add(dr)

           Next
       End Sub
    </script>
    <body>
        <form runat="server" id="form1">
            <h3>BoundColumn DataFormatString Example</h3>
            <asp:DataGrid id="ItemsGrid" 
                BorderColor="black" BorderWidth="1" CellPadding="3"
                OnEditCommand="ItemsGrid_Edit" OnCancelCommand="ItemsGrid_Cancel" 
                OnUpdateCommand="ItemsGrid_Update" AutoGenerateColumns="false"
                runat="server" >

                <HeaderStyle backcolor="#aaaadd"></HeaderStyle>

                <Columns>
                    <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" 
                         UpdateText="Update" HeaderText="Edit Command Column">
                        <ItemStyle Wrap="False"></ItemStyle>
                        <HeaderStyle wrap="false"></HeaderStyle>
                    </asp:EditCommandColumn>

                    <asp:BoundColumn HeaderText="Item" DataField="Item" 
                                     ReadOnly="True" />

                    <asp:BoundColumn HeaderText="Quantity" DataField="Qty" 
                                     DataFormatString="{0:N0}"/>

                    <asp:BoundColumn HeaderText="Price" DataField="Price"
                                     DataFormatString="{0:c}" />

                    <asp:BoundColumn HeaderText="Weight" DataField="Weight" 
                                     ReadOnly="True" DataFormatString="{0:F3}" />

                    <asp:BoundColumn HeaderText="Expires" DataField="Expires" 
                                     ReadOnly="True" DataFormatString="{0:g}" />

                </Columns>
            </asp:DataGrid>
        </form>
    </body>
</html>

Opmerkingen

Gebruik de DataFormatString eigenschap om een aangepaste indeling op te geven voor de items in de kolom.

De tekenreeks voor gegevensindeling bestaat uit twee delen, gescheiden door een dubbele punt, in de vorm { A : Bxx }. De opmaaktekenreeks {0:F2} geeft bijvoorbeeld een vast puntnummer weer met twee decimalen.

Note

De hele tekenreeks moet tussen accolades staan om aan te geven dat het een notatietekenreeks is en geen letterlijke tekenreeks. Alle tekst buiten de accolades wordt weergegeven als letterlijke tekst.

De waarde vóór de dubbele punt (A in het algemene voorbeeld) geeft de parameterindex op in een op nul gebaseerde lijst met parameters.

Note

Deze waarde kan alleen worden ingesteld op 0 omdat er slechts één waarde in elke cel is.

Het teken na de dubbele punt (B in het algemene voorbeeld) geeft de notatie op waarin de waarde moet worden weergegeven. De volgende tabel bevat de algemene notaties.

Teken opmaken Beschrijving
C Geeft numerieke waarden weer in valutanotatie.
D Geeft numerieke waarden weer in decimale notatie.
E Geeft numerieke waarden weer in wetenschappelijke (exponentiële) notatie.
F Geeft numerieke waarden weer in vaste notatie.
G Geeft numerieke waarden weer in de algemene notatie.
N Geeft numerieke waarden weer in getalnotatie.
X Geeft numerieke waarden weer in hexadecimale notatie.

Note

Het notatieteken is niet hoofdlettergevoelig, met uitzondering van X, waarin de hexadecimale tekens in het opgegeven geval worden weergegeven.

De waarde na het notatieteken (xx in het algemene voorbeeld) geeft het aantal significante cijfers of decimalen op dat moet worden weergegeven.

Zie Opmaaktypen voor meer informatie over het opmaken van tekenreeksen.

Van toepassing op

Zie ook