GridView排序简单实现

使用javascript操作table排序才是实用的排序,这样排序不怎么好,但是有时候可能会用来,记录一下。

前台:

代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewSort.aspx.cs" Inherits="GridViewSort" %>

<!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 runat="server">
    
<title>GridView排序简单实现</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:GridView ID="gdvSort" runat="server" OnSorting="gdvSort_Sorting">
        
</asp:GridView>
    
</div>
    
</form>
</body>
</html>

 

后台:

代码
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 GridViewSort : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {
        
if (!IsPostBack)
        {
            ViewState[
"SortOrder"= "PID";
            ViewState[
"OrderDire"= "Desc";
            Bind();
        }
    }
    
private void Bind()
    {
        gdvSort.AllowSorting 
= true;
        DataView dv 
= getDt().DefaultView;
        dv.Sort 
= (string)ViewState["SortOrder"+ " " + (string)ViewState["OrderDire"];
        gdvSort.DataSource 
= dv;
        gdvSort.DataBind();
    }
    
/// <summary>
    
/// 连数据库麻烦,直接构造一个DataTable
    
/// </summary>
    
/// <returns></returns>
    private DataTable getDt()
    {
        DataTable dt 
= new DataTable();
        dt.Columns.Add(
"PID"typeof(System.Int32));
        dt.Columns.Add(
"UserName"typeof(System.String));
        
for (int i = 0; i < 10; i++)
        {
            DataRow dr 
= dt.NewRow();
            dr[
"PID"= i;
            dr[
"UserName"= "姓名" + i;
            dt.Rows.Add(dr);
        }
        
return dt;
    }
    
protected void gdvSort_Sorting(object sender, GridViewSortEventArgs e)
    {
        
string sPage = e.SortExpression;
        
if (ViewState["SortOrder"].ToString() == sPage)
        {
            
if (ViewState["OrderDire"].ToString() == "Desc")
            {
                ViewState[
"OrderDire"= "Asc";
            }
            
else
            {
                ViewState[
"OrderDire"= "Desc";
            }
        }
        
else
            ViewState[
"SortOrder"= e.SortExpression;
        Bind();
    }
}

 

 

posted @ 2009-12-10 11:52  大气象  阅读(687)  评论(0编辑  收藏  举报
http://www.tianqiweiqi.com