ASP.Net/ADO.net Database/DataView

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

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;
    }
}