Compartir a través de


BoundColumn.DataFormatString Propiedad

Definición

Obtiene o establece la cadena que especifica el formato de presentación de los elementos en la columna.

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

Valor de propiedad

Cadena de formato que especifica el formato de presentación de los elementos en la columna. El valor predeterminado es Empty.

Ejemplos

En el ejemplo siguiente se muestra cómo usar la DataFormatString propiedad para especificar varios formatos para las columnas del DataGrid control . La Qty columna tiene el formato de entero, la Price columna tiene el formato de moneda, la Weight columna tiene formato de número decimal y la Expires columna tiene el formato de cadena de fecha y hora corta.


<%@ 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>

Comentarios

Utilice la DataFormatString propiedad para proporcionar un formato personalizado para los elementos de la columna.

La cadena de formato de datos consta de dos partes, separadas por dos puntos, con el formato { A : Bxx }. Por ejemplo, la cadena {0:F2} de formato muestra un número de punto fijo con dos posiciones decimales.

Nota

Toda la cadena debe ir entre llaves para indicar que es una cadena de formato y no una cadena literal. Cualquier texto fuera de las llaves se muestra como texto literal.

El valor anterior a los dos puntos (A en el ejemplo general) especifica el índice de parámetros en una lista de parámetros de base cero.

Nota

Este valor solo se puede establecer en 0 porque solo hay un valor en cada celda.

El carácter después de los dos puntos (B en el ejemplo general) especifica el formato en el que se mostrará el valor. En la tabla siguiente se enumeran los formatos comunes.

Formato de carácter Descripción
C Muestra valores numéricos en formato de moneda.
D Muestra valores numéricos en formato decimal.
E Muestra valores numéricos en formato científico (exponencial).
F Muestra valores numéricos en formato fijo.
G Muestra valores numéricos en formato general.
N Muestra valores numéricos en formato numérico.
X Muestra valores numéricos en formato hexadecimal.

Nota

El carácter de formato no distingue mayúsculas de minúsculas, excepto para X, que muestra los caracteres hexadecimales en el caso especificado.

El valor después del carácter de formato (xx en el ejemplo general) especifica el número de dígitos significativos o posiciones decimales que se van a mostrar.

Para obtener más información sobre cómo dar formato a las cadenas, vea Tipos de formato.

Se aplica a

Consulte también