// 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();
} } 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; // Rebind the data source and specify that it should be sorted // by the field specified in the SortExpression property. ItemsGrid.DataSource = dv; ItemsGrid.DataBind(); } void Check_Change(Object sender, EventArgs e) {
// Allow or prevent sorting depending on the user's selection. if (AllowSortingCheckBox.Checked) { ItemsGrid.AllowSorting = true; } else { ItemsGrid.AllowSorting = false; } // After changing the property, rebind the data to // refresh the DataGrid control. // Retrieve the data source from session state. DataTable dt = (DataTable)Session["Source"]; // Create a DataView from the DataTable. DataView dv = new DataView(dt); // Rebind the data source. ItemsGrid.DataSource = dv; ItemsGrid.DataBind(); } </script>
<body>
<form runat=server>
<h3>DataGrid AllowSorting Example</h3> Select whether to allow sorting in the DataGrid control. <br><br>
<%@ 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; // Rebind the data source and specify that it should be sorted
// by the field specified in the SortExpression property.
ItemsGrid.DataSource = dv;
ItemsGrid.DataBind(); } void Check_Change(Object sender, EventArgs e)
{
// Allow or prevent sorting depending on the user's selection.
if (AllowSortingCheckBox.Checked)
{ ItemsGrid.AllowSorting = true; }
else
{ ItemsGrid.AllowSorting = false; } // After changing the property, rebind the data to
// refresh the DataGrid control. // Retrieve the data source from session state.
DataTable dt = (DataTable)Session["Source"]; // Create a DataView from the DataTable.
DataView dv = new DataView(dt); // Rebind the data source.
ItemsGrid.DataSource = dv;
ItemsGrid.DataBind(); } </script>
<body>
<form runat=server>
<h3>DataGrid AllowSorting Example</h3> Select whether to allow sorting in the DataGrid control. <br><br>
<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> <hr> <asp:CheckBox id="AllowSortingCheckBox"
Text="Allow sorting"
AutoPostBack="True"
Checked="True"
OnCheckedChanged="Check_Change"
runat="server"/>
</form>
</body>
</html>