BoundColumn.DataFormatString プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
列内の項目の表示形式を指定する文字列を取得または設定します。
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
プロパティ値
列内の項目の表示形式を指定する書式指定文字列。 既定値は Empty です。
例
次の例では、 プロパティを使用して、コントロール内の DataFormatString 列のさまざまな形式を指定する方法を DataGrid 示します。 列は Qty
整数で書式設定され、 Price
列は通貨として書式設定され、 Weight
列は 10 進数で書式設定され Expires
、列は短い日付と時刻の文字列として書式設定されます。
<%@ 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>
注釈
プロパティを DataFormatString 使用して、列内の項目のカスタム形式を指定します。
データ書式指定文字列は、コロンで区切られた 2 つの部分で構成されます({ A
: Bxx
})。 たとえば、書式設定文字列 {0:F2} には、小数点以下 2 桁の固定小数点番号が表示されます。
Note
文字列全体を中かっこで囲んで、リテラル文字列ではなく書式指定文字列であることを示す必要があります。 中かっこの外側のテキストは、リテラル テキストとして表示されます。
コロン (A
一般的な例では) の前の値は、パラメーターの 0 から始まるリスト内のパラメーター インデックスを指定します。
Note
この値は、各セルに 1 つの値しかないため、0 にのみ設定できます。
コロン (B
一般的な例では) の後の文字は、値を表示する形式を指定します。 次の表に、一般的な形式を示します。
文字の書式設定 | 説明 |
---|---|
C |
数値を通貨形式で表示します。 |
D |
数値を 10 進形式で表示します。 |
E |
数値を指数 (指数) 形式で表示します。 |
F |
数値を固定形式で表示します。 |
G |
数値を一般的な形式で表示します。 |
N |
数値を数値形式で表示します。 |
X |
数値を 16 進数形式で表示します。 |
Note
書式文字では、 を除き X
、大文字と小文字は区別されません。指定された大文字と小文字の区別で 16 進文字が表示されます。
書式文字の後の値 (xx
一般的な例では) は、表示する有効桁数または小数点以下の桁数を指定します。
書式指定文字列の詳細については、「Formatting Types」(型の書式設定) を参照してください。
適用対象
こちらもご覧ください
.NET