前台HTML代码:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table class="style1">
<tr>
<td>
原始排序:</td>
</tr>
<tr>
<td>
<asp:GridView ID="gv1" runat="server" AutoGenerateColumns="False" Width="306px"
CellPadding="4" ForeColor="#333333" GridLines="None" style="font-size: small">
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<Columns>
<asp:BoundField DataField="cardNo" HeaderText="卡号" />
<asp:BoundField DataField="cardBound" HeaderText="内卡号" />
<asp:BoundField DataField="name" HeaderText="姓名" />
<asp:BoundField DataField="mobileID" HeaderText="机器码" />
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
</td>
</tr>
<tr>
<td>
按内卡号排序:</td>
</tr>
<tr>
<td>
<asp:GridView ID="gv2" runat="server" AutoGenerateColumns="False" Width="306px"
CellPadding="4" ForeColor="#333333" GridLines="None" style="font-size: small">
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<Columns>
<asp:BoundField DataField="cardNo" HeaderText="卡号" />
<asp:BoundField DataField="cardBound" HeaderText="内卡号" />
<asp:BoundField DataField="name" HeaderText="姓名" />
<asp:BoundField DataField="mobileID" HeaderText="机器码" />
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
</td>
</tr>
<tr>
<td>
按机器码排序:</td>
</tr>
<tr>
<td>
<asp:GridView ID="gv3" runat="server" AutoGenerateColumns="False" Width="306px"
CellPadding="4" ForeColor="#333333" GridLines="None" style="font-size: small">
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<Columns>
<asp:BoundField DataField="cardNo" HeaderText="卡号" />
<asp:BoundField DataField="cardBound" HeaderText="内卡号" />
<asp:BoundField DataField="name" HeaderText="姓名" />
<asp:BoundField DataField="mobileID" HeaderText="机器码" />
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
</td>
</tr>
</table> <asp:DropDownList ID="dlFilter" runat="server" AutoPostBack="True" DataTextFormatString="cardNo:{0}" OnSelectedIndexChanged="dlFilter_SelectedIndexChanged" Width="150px" AppendDataBoundItems="True">
<asp:ListItem Value="-1">选择分类编号</asp:ListItem>
</asp:DropDownList>
<asp:Label ID="lbData" runat="server"></asp:Label>
</div>
</form>
</body>
</html>

后台CS文件代码:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq; using System.Data.SqlClient;
using System.Text; public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//排序
string conStr = "server=.;database=TYW;uid=sa;pwd=123.456;";
SqlConnection conn = new SqlConnection(conStr);//创建连接对象
if (conn.State.Equals(ConnectionState.Closed))
conn.Open();//显式地打开数据库连接
string strsql = "select top 5 cardNo,cardBound,name,mobileID from card";
SqlDataAdapter da = new SqlDataAdapter(strsql, conn);//创建数据适配器
DataSet ds = new DataSet();//创建数据集
da.Fill(ds, "card");//填充数据集 原始排序
gv1.DataSource = ds.Tables["card"];
DataView view2 = new DataView(ds.Tables["card"]);
view2.Sort = "cardBound";//设置排序表达式
gv2.DataSource = view2;//将排序后的DataView视图中数据绑定到GridView控件中
DataView view3 = new DataView(ds.Tables["card"]);
view3.Sort = "mobileID";//设置排序表达式
gv3.DataSource = view3;//将排序后的DataView视图中数据绑定到GridView控件中
Page.DataBind();//为整个页面中控件绑定数据
conn.Close();//关闭数据库连接 ///显示UrlID的数据
ReadUrlIDData();
///从Session中获取缓存的数据
if (Session["cardData"] == null)
{ ///如果没有缓存数据,则添加新的数据到缓存中
Session["cardData"] = ReadData();
///显示数据
ShowData(((DataTable)Session["cardData"]).DefaultView);
}
}
}
private void ReadUrlIDData()
{ ///创建数据库链接
string conString = "server=.;database=TYW;uid=sa;pwd=123.456;";
SqlConnection myCon = new SqlConnection(conString);
///创建执行命令
SqlCommand myCmd = new SqlCommand("SELECT DISTINCT cardNo FROM card ORDER BY cardNo", myCon);
///定义dr
SqlDataReader dr = null;
try
{ ///打开数据库的链接
myCon.Open();
///从数据库读取数据
dr = myCmd.ExecuteReader();
///设置下拉框的数据
dlFilter.DataSource = dr;
dlFilter.DataTextField = "cardNo";
dlFilter.DataValueField = "cardNo";
dlFilter.DataBind();
///关闭数据读取器
dr.Close();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{ ///关闭数据库的链接
myCon.Close();
}
} private DataTable ReadData()
{ ///创建数据库链接
string conString = "server=.;database=TYW;uid=sa;pwd=123.456;";
SqlConnection myCon = new SqlConnection(conString);
///创建执行命令
SqlCommand myCmd = new SqlCommand("SELECT * FROM card", myCon);
///定义dr
SqlDataReader dr = null;
try
{ ///打开数据库的链接
myCon.Open();
///从数据库读取数据
dr = myCmd.ExecuteReader(CommandBehavior.CloseConnection); ///创建DataTabel,并显示DataTable中的数据
return (CreateDataTableData(dr));
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{ ///关闭数据库的链接
myCon.Close();
}
return (DataTable)null;
} private DataTable CreateDataTableData(SqlDataReader dr)
{
DataTable dt = new DataTable();
///创dt的列
foreach (DataRow row in dr.GetSchemaTable().Rows)
{ ///需要列的名称和数据类型
dt.Columns.Add(new DataColumn(row["ColumnName"].ToString(), (Type)row["DataType"]));
}
///读取数据
while (dr.Read())
{ ///创建一个新行
DataRow newrow = dt.NewRow();
foreach (DataRow row in dr.GetSchemaTable().Rows)
{ ///读取数据
newrow[row["ColumnName"].ToString()] = dr[row["ColumnName"].ToString()];
}
///添加新行
dt.Rows.Add(newrow);
}
///关闭读取器
dr.Close();
return (dt);
} private void ShowData(DataView dv)
{
StringBuilder sb = new StringBuilder();
///添加表头
sb.Append("<table border=1>");
///添加表的标题栏
sb.Append("<tr>");
for (int i = ; i < dv.Table.Columns.Count; i++)
{
sb.Append("<td bgcolor=gray>");
sb.Append(dv.Table.Columns[i].ColumnName);
sb.Append("</td>");
}
sb.Append("</tr>");
///添加数据
foreach (DataRowView rowview in dv)
{ ///添加一行数据
DataRow row = rowview.Row;
sb.Append("<tr>");
for (int i = ; i < row.ItemArray.Length; i++)
{ ///添加数据的列
sb.Append("<td>");
sb.Append(row.ItemArray[i].ToString());
sb.Append("</td>");
}
sb.Append("</tr>");
}
///添加结束符号
sb.Append("</table");
sb.Append("<hr />");
///输出字符串
lbData.Text = sb.ToString();
}
protected void dlFilter_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt;
///从Session中获取缓存的数据, 将整个数据都缓存在Session中了
if (Session["cardData"] == null)
{ ///如果没有缓存数据,则添加新的数据到缓存中
dt = ReadData();
Session["cardData"] = dt;
}
else
{
dt = (DataTable)Session["cardData"];
}
if (dlFilter.SelectedItem.Value == "-1")
{ ///设置过滤表达式
dt.DefaultView.RowFilter = "";
///显示数据
ShowData(dt.DefaultView);
}
else
{ ///设置过滤表达式
DataView dv = dt.DefaultView;
dv.RowFilter = "cardNo ='" + dlFilter.SelectedItem.Value + "'";
///显示数据
ShowData(dv);
}
}
}

025. asp.net中GridView的排序和过滤的更多相关文章

  1. Asp.net中GridView使用详解(很全,很经典 转来的)

    Asp.net中GridView使用详解 效果图参考:http://hi.baidu.com/hello%5Fworld%5Fws/album/asp%2Enet中以gv开头的图片 l         ...

  2. Asp.net中GridView使用详解(引)【转】

    Asp.net中GridView使用详解(引) GridView无代码分页排序 GridView选中,编辑,取消,删除 GridView正反双向排序 GridView和下拉菜单DropDownList ...

  3. Asp.net中GridView使用详解(很全,很经典)

    http://blog.csdn.net/hello_world_wusu/article/details/4052844 Asp.net中GridView使用详解 效果图参考:http://hi.b ...

  4. ASP.NET中Gridview一些技巧

    ASP.NET中Gridview一些技巧 一.后台覆盖掉Gridview中自动填充的值 我们可以再Gridview中的事件触发的过程中修改其中的值,而这些值将会在具体的运行过程中覆盖掉那些自动属性.这 ...

  5. Asp.net中GridView详解《转》

    ASP.NET服务器控件GridView 1         ASP.NET 服务器控件GridView使用 本教程不介绍服务器端控件的呈现,事件处理,状态等理论知识,只介绍服务器端控件的使用操作,如 ...

  6. Asp.net中GridView使用详解(引)

    GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠标移到Gr ...

  7. 关于开发C#中的asp.net中gridview控件的使用

    原文网址:http://blog.sina.com.cn/s/blog_67f1b4b201017663.html 1.GridView无代码分页排序: 效果图: 1.AllowSorting设为Tr ...

  8. asp.net中gridview的checkbox使用总结

    1.在gridview中的<column>中加入 <asp:TemplateField HeaderText="选择"> <ItemTemplate& ...

  9. 使用模板技术处理ASP.NET中GridView额外序号列的问题

    问题描述: 现在要在一张GridView表中添加一列来显示行号,要求是显示下一页的时候能够递增而不是从新编号.数据库中的没有相关序号列 如何在软件端实现呢? 通过测试,添加以下代码即可解决需求. &l ...

随机推荐

  1. Ch2.Making Reconmmendation in PCI

    做<Programing Collective Intelligence>中chapter 2.Making Recommendation的实例,有3个问题花了好长时间: 1. 遇到报错& ...

  2. Linux内存管理之地址映射

    写在前面:由于地址映射涉及到各种寄存器的设置访问,Linux对于不同体系结构处理器的地址映射采用不同的方法,例如对于i386及后来的32位的Intel的处理器在页式映射时采用的是2级页表映射,而对于I ...

  3. 我与python3擦肩而过(一)—— Dict与collections.OrderredDict邂逅

    最近一直在撸Python Data Analysis上的代码(书是基于Python2的,小白我用的python3),所以我下的时候多少有些改动. 这是9.4中的nltk词频分析关于Dict_key的问 ...

  4. 文本编辑器vim

    Vim是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最大的文本编辑器,它的作用是建立.编辑.显示文本文件. Vim没有菜单,只有命令.

  5. LINQ学习之旅(六)

    Insert/Update/Delete操作 插入(Insert) 1.简单形式 说明:new一个对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges()提 ...

  6. Golang 交叉编译

    各平台的GOOS和GOARCH参考 OS ARCH OS version linux 386 / amd64 / arm >= Linux 2.6 darwin 386 / amd64 OS X ...

  7. LeetCode Majority Element(简单题)

    题意: 给一个数组,其中有一个元素的出现次数已经超过数组的一半大小,请找出这个元素? 思路: 可以扫一遍数组,将这个出现次数过多的元素抵消其他的元素,最后必定留下1个以上的元素,就是它自己了. pyt ...

  8. OpenFlow Switch学习笔记(一)——基础概念

    OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...

  9. Windows下Nginx+Tomcat整合的安装与配置

    原帖:http://zyjustin9.iteye.com/blog/2017394 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人 ...

  10. hdu 2337 Escape from Enemy Territory

    题目大意 给你一张nn*mm矩形地图.上面有些点上有敌营.给你起点和终点, 你找出一条最优路径.满足最优路径上的点离敌营的最近最短距离是所有路径最短的.若有多条找路径最短的一条. 分析 通过二分来确定 ...