DataGridColumn.SortExpression-Eigenschaft
Ruft den Namen des Felds oder Ausdrucks ab, der an die OnSortCommand-Methode übergeben wird, wenn eine Spalte für die Sortierung ausgewählt wurde, oder legt diesen fest.
Namespace: System.Web.UI.WebControls
Assembly: System.Web (in system.web.dll)
Syntax
'Declaration
Public Overridable Property SortExpression As String
'Usage
Dim instance As DataGridColumn
Dim value As String
value = instance.SortExpression
instance.SortExpression = value
public virtual string SortExpression { get; set; }
public:
virtual property String^ SortExpression {
String^ get ();
void set (String^ value);
}
/** @property */
public String get_SortExpression ()
/** @property */
public void set_SortExpression (String value)
public function get SortExpression () : String
public function set SortExpression (value : String)
Eigenschaftenwert
Der Name des Felds, der an OnSortCommand übergeben wird, wenn eine Spalte für die Sortierung ausgewählt wurde. Der Standardwert ist String.Empty.
Hinweise
Mit der SortExpression-Eigenschaft können Sie den Namen des Felds festlegen oder bestimmten, der an die OnSortCommand-Methode übergeben wird, wenn eine Spalte für die Sortierung ausgewählt wurde.
Hinweis
Mit dieser Eigenschaft wird die Spalte nicht an ein Feld in der Datenquelle gebunden. Informationen über das Binden einer Spalte an ein Feld finden Sie in der Dokumentation zu dem entsprechenden Spaltentyp.
Wenn das Sortieren aktiviert ist, werden LinkButton-Steuerelemente im Kopfzeilenbereich aller Spalten dargestellt, in denen die SortExpression-Eigenschaft festgelegt ist.
Hinweis
Wenn die AutoGenerateColumns-Eigenschaft auf true festgelegt ist, wird die SortExpression-Eigenschaft für alle Spalten im DataGrid-Steuerelement, die die Datenbindung unterstützen, automatisch auf den an die Spalte gebundenen Feldnamen festgelegt. Wenn die AutoGenerateColumns-Eigenschaft auf false festgelegt ist, müssen Sie die SortExpression-Eigenschaft manuell für alle Spalten, für die Sie das Sortieren aktiviert möchten, auf den an die Spalte gebundenen Feldnamen festlegen.
Mit diesen LinkButton-Steuerelementen können Sie das DataGrid-Steuerelement nach der ausgewählten Spalte sortieren. Das Klicken auf ein LinkButton-Steuerelement für eine Spalte löst das SortCommand-Ereignis aus. Der Wert der SortExpression-Eigenschaft für die ausgewählte Spalte wird als Teil des DataGridSortCommandEventArgs-Objekts an den OnSortCommand-Ereignishandler übergeben.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie mit der SortExpression-Eigenschaft der für die Sortierung verwendete Feldname festgelegt werden kann.
<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<html>
<script runat="server">
Function CreateDataSource() As ICollection
' Create a Random object to mix up the order of items in the
' sample data.
Dim Rand_Num As Random = New Random()
' Create sample data for the DataGrid control.
Dim dt As DataTable = New DataTable()
Dim dr As DataRow
' Define the columns of the table.
dt.Columns.Add(new DataColumn("IntegerValue", GetType(Int32)))
dt.Columns.Add(new DataColumn("StringValue", GetType(String)))
dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double)))
' Populate the table with sample values.
Dim i As Integer
For i = 0 To 8
dr = dt.NewRow()
dr(0) = i
dr(1) = "Item " & Rand_Num.Next(1, 15).ToString()
dr(2) = 1.23 * Rand_Num.Next(1, 15)
dt.Rows.Add(dr)
Next i
' To persist the data source between posts to the server,
' store it in session state.
Session("Source") = dt
Dim dv As DataView = New DataView(dt)
Return dv
End Function
Sub Page_Load(sender As Object, e As EventArgs)
' Load sample data only once, when the page is first loaded.
If Not IsPostBack Then
ItemsGrid.DataSource = CreateDataSource()
ItemsGrid.DataBind()
End If
End Sub
Sub Sort_Grid(sender As Object, e As DataGridSortCommandEventArgs)
' Retrieve the data source from session state.
Dim dt As DataTable = CType(Session("Source"), DataTable)
' Create a DataView from the DataTable.
Dim dv As DataView = New DataView(dt)
' The DataView provides an easy way to sort. Simply set the
' Sort property with the name of the field to sort by.
dv.Sort = e.SortExpression
' Re-bind the data source and specify that it should be sorted
' by the field specified in the SortExpression property.
ItemsGrid.DataSource = dv
ItemsGrid.DataBind()
End Sub
</script>
<body>
<form runat=server>
<h3>DataGrid SortExpression Example</h3>
<b>Product List</b>
<asp:DataGrid id="ItemsGrid"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
OnSortCommand="Sort_Grid"
AutoGenerateColumns="False"
AllowSorting="True"
runat="server">
<HeaderStyle BackColor="#00aaaa">
</HeaderStyle>
<Columns>
<asp:BoundColumn DataField="IntegerValue"
SortExpression="IntegerValue"
HeaderText="Item"/>
<asp:BoundColumn DataField="StringValue"
SortExpression="StringValue"
HeaderText="Description"/>
<asp:BoundColumn DataField="CurrencyValue"
HeaderText="Price"
SortExpression="CurrencyValue"
DataFormatString="{0:c}">
<ItemStyle HorizontalAlign="Right">
</ItemStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<html>
<script runat="server">
ICollection CreateDataSource()
{
// Create a Random object to mix up the order of items in the
// sample data.
Random Rand_Num = new Random();
// Create sample data for the DataGrid control.
DataTable dt = new DataTable();
DataRow dr;
// Define the columns of the table.
dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
dt.Columns.Add(new DataColumn("StringValue", typeof(String)));
dt.Columns.Add(new DataColumn("CurrencyValue", typeof(Double)));
// Populate the table with sample values.
for (int i=0; i<=8; i++)
{
dr = dt.NewRow();
dr[0] = i;
dr[1] = "Item " + Rand_Num.Next(1, 15).ToString();
dr[2] = 1.23 * Rand_Num.Next(1, 15);
dt.Rows.Add(dr);
}
// To persist the data source between posts to the server,
// store it in session state.
Session["Source"] = dt;
DataView dv = new DataView(dt);
return dv;
}
void Page_Load(Object sender, EventArgs e)
{
// Load sample data only once, when the page is first loaded.
if (!IsPostBack)
{
ItemsGrid.DataSource = CreateDataSource();
ItemsGrid.DataBind();
}
}
void Sort_Grid(Object sender, DataGridSortCommandEventArgs e)
{
// Retrieve the data source from session state.
DataTable dt = (DataTable)Session["Source"];
// Create a DataView from the DataTable.
DataView dv = new DataView(dt);
// The DataView provides an easy way to sort. Simply set the
// Sort property with the name of the field to sort by.
dv.Sort = e.SortExpression;
// Re-bind the data source and specify that it should be sorted
// by the field specified in the SortExpression property.
ItemsGrid.DataSource = dv;
ItemsGrid.DataBind();
}
</script>
<body>
<form runat=server>
<h3>DataGrid SortExpression Example</h3>
<b>Product List</b>
<asp:DataGrid id="ItemsGrid"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
OnSortCommand="Sort_Grid"
AutoGenerateColumns="False"
AllowSorting="True"
runat="server">
<HeaderStyle BackColor="#00aaaa">
</HeaderStyle>
<Columns>
<asp:BoundColumn DataField="IntegerValue"
SortExpression="IntegerValue"
HeaderText="Item"/>
<asp:BoundColumn DataField="StringValue"
SortExpression="StringValue"
HeaderText="Description"/>
<asp:BoundColumn DataField="CurrencyValue"
HeaderText="Price"
SortExpression="CurrencyValue"
DataFormatString="{0:c}">
<ItemStyle HorizontalAlign="Right">
</ItemStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
Plattformen
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
DataGridColumn-Klasse
DataGridColumn-Member
System.Web.UI.WebControls-Namespace
DataGrid-Klasse
OnSortCommand
String.Empty