Mega Code Archive

 
Categories / ASP.Net / ADO Database
 

Use a DataView as a way to filter and sort a DataTable

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="DataViewTester" %> <!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 id="Head1" runat="server">     <title>Using a DataView</title> </head> <body>    <form id="form1" runat="server">    <div id="container">       Choose sort field:        <asp:DropDownList ID="drpSort" runat="server" >          <asp:ListItem>Id</asp:ListItem>          <asp:ListItem>FirstName</asp:ListItem>          <asp:ListItem>LastName</asp:ListItem>          <asp:ListItem>Phone</asp:ListItem>       </asp:DropDownList><br />       Last Name Filter: <asp:TextBox ID="txtFilter" runat="server" />          <asp:Button ID="btnSubmit" runat="server" OnClick="btnViewData_Click" Text="View Data"/><br />       <hr />       <asp:GridView id="grdCustomer" runat="server" />          </div>    </form> </body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class DataViewTester : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {        if (!IsPostBack)           grdCustomer.Visible = false;     }          protected void btnViewData_Click(object sender, EventArgs e)     {        DataTable table = MakeData();             DataView view = new DataView(table);         view.Sort = drpSort.SelectedValue + " ASC";        if (txtFilter.Text.Length > 0)           view.RowFilter = "LastName Like '" + txtFilter.Text + "'";             grdCustomer.Visible = true;        grdCustomer.DataSource = view;        grdCustomer.DataBind();     }          private DataTable MakeData()     {        DataTable table = new DataTable();             DataColumn idCol = new DataColumn();        idCol.ColumnName = "Id";        idCol.DataType = typeof(Int32);        idCol.AllowDBNull = false;        idCol.Unique = true;        idCol.AutoIncrement = true;             DataColumn firstNameCol = new DataColumn("FirstName", typeof(string));        DataColumn lastNameCol = new DataColumn("LastName", typeof(string));        DataColumn phoneCol = new DataColumn("Phone", typeof(string));             table.Columns.Add(idCol);        table.Columns.Add(firstNameCol);        table.Columns.Add(lastNameCol);        table.Columns.Add(phoneCol);             DataRow r1 = table.NewRow();        r1[1] = "A";        r1[2] = "a";        r1[3] = "123-4567";        table.Rows.Add(r1);             DataRow r2 = table.NewRow();        r2["FirstName"] = "B";        r2["LastName"] = "b";        r2["Phone"] = "564-7823";        table.Rows.Add(r2);             DataRow r3 = table.NewRow();        r3["FirstName"] = "C";        r3["LastName"] = "c";        r3["Phone"] = "253-6383";        table.Rows.Add(r3);             DataRow r4 = table.NewRow();        r4["FirstName"] = "D";        r4["LastName"] = "d";        r4["Phone"] = "456-1267";        table.Rows.Add(r4);             return table;     } }