怎么实现GridView排序???

自由_ 2009-12-08 08:12:26
其他属性都是设置好了,
在GridView1_Sorting事件中写什么代码??
学习!!!
...全文
986 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
自由_ 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pony_yu 的回复:]
GridView控件自带排序(一)


C# code1using System;2using System.Data;3using System.Data.SqlClient;4using System.Configuration;5using System.Collections;6using System.Web;7using System.Web.Security;8using System.Web.UI;9using System.Web.UI.WebControls;10using System.Web.UI.WebControls.WebParts;11using System.Web.UI.HtmlControls;1213publicpartialclass Demo6 : System.Web.UI.Page14 {15protectedvoid Page_Load(object sender, EventArgs e)16 {17if (Page.IsPostBack==false)18 {19this.GridView.Attributes.Add("SortExpression","UserID");20this.GridView.Attributes.Add("SortDirection","ASC");2122 BindData();23 }24 }2526publicvoid BindData()27 {28string sortExpression=this.GridView.Attributes["SortExpression"];29string sortDirection=this.GridView.Attributes["SortDirection"];3031string strSql="select UserID,C_Name,E_Name,QQ from Demo_User";32 DataTable dt= SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING, CommandType.Text, strSql,null).Tables[0];3334// 根据GridView排序数据列及排序方向设置显示的默认数据视图35if ((!string.IsNullOrEmpty(sortExpression))&& (!string.IsNullOrEmpty(sortDirection)))36 {37 dt.DefaultView.Sort=string.Format("{0} {1}", sortExpression, sortDirection);38 }3940 GridView.DataSource= dt;41 GridView.DataBind();42 }4344protectedvoid GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)45 {46 GridView.PageIndex= e.NewPageIndex;47 BindData();48 }4950protectedvoid GridView_Sorting(object sender, GridViewSortEventArgs e)51 {52// 从事件参数获取排序数据列53string sortExpression= e.SortExpression.ToString();54// 假定为排序方向为“顺序”55string sortDirection="ASC";56// “ASC”与事件参数获取到的排序方向进行比较,进行GridView排序方向参数的修改57if (sortExpression==this.GridView.Attributes["SortExpression"])58 {59//获得下一次的排序状态60 sortDirection= (this.GridView.Attributes["SortDirection"].ToString()== sortDirection?"DESC" :"ASC");61 }62// 重新设定GridView排序数据列及排序方向63this.GridView.Attributes["SortExpression"]= sortExpression;64this.GridView.Attributes["SortDirection"]= sortDirection;65 BindData();6667 }68 }


GridView控件自带排序(二)

C# code1using System;2using System.Data;3using System.Data.SqlClient;4using System.Configuration;5using System.Collections;6using System.Web;7using System.Web.Security;8using System.Web.UI;9using System.Web.UI.WebControls;10using System.Web.UI.WebControls.WebParts;11using System.Web.UI.HtmlControls;1213publicpartialclass Demo7 : System.Web.UI.Page14 {15protectedvoid Page_Load(object sender, EventArgs e)16 {17if (Page.IsPostBack==false)18 {19 ViewState["SortOrder"]="UserID";20 ViewState["OrderDire"]="ASC";2122 BindData();23 }24 }2526publicvoid BindData()27 {28string sortExpression=this.GridView.Attributes["SortExpression"];29string sortDirection=this.GridView.Attributes["SortDirection"];3031string strSql="select UserID,C_Name,E_Name,QQ from Demo_User";32 DataTable dt= SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING, CommandType.Text, strSql,null).Tables[0];3334 DataView dv= dt.DefaultView;35string sort= (string)ViewState["SortOrder"]+""+ (string)ViewState["OrderDire"];36 dv.Sort= sort;3738 GridView.DataSource= dt;39 GridView.DataBind();40 }4142protectedvoid GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)43 {44 GridView.PageIndex= e.NewPageIndex;45 BindData();46 }4748protectedvoid GridView_Sorting(object sender, GridViewSortEventArgs e)49 {50string sPage= e.SortExpression;51if (ViewState["SortOrder"].ToString()== sPage)52 {53if (ViewState["OrderDire"].ToString()=="Desc")54 ViewState["OrderDire"]="ASC";55else56 ViewState["OrderDire"]="Desc";57 }58else59 {60 ViewState["SortOrder"]= e.SortExpression;61 }62 BindData();6364 }65 }6667681<table align="center" bgcolor="#c0de98" border="0" cellpadding="0" cellspacing="1" width="99%">2<tr>3<th colspan="2">4 GridView演示</th>5</tr>6<tr>7<td colspan="2" style="width: 100%;">8<asp:GridView ID="GridView" runat="server" Width="100%" AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanging="GridView_PageIndexChanging" PageSize="12" AllowSorting="True" OnSorting="GridView_Sorting">9<Columns>10<asp:BoundField DataField="UserID" HeaderText="UserID" SortExpression="UserID"/>11<asp:BoundField DataField="C_Name" HeaderText="中文名字" SortExpression="C_Name"/>12<asp:BoundField DataField="E_Name" HeaderText="英文名字" SortExpression="E_Name"/>13<asp:BoundField DataField="QQ" HeaderText="QQ帐号" SortExpression="QQ"/>14</Columns>15<RowStyle HorizontalAlign="Center"/>16<PagerStyle HorizontalAlign="Right"/>17</asp:GridView>18</td>19</tr>202122</table>
[/Quote]
那用LINQ获取数据源,怎么写呢????
pony_yu 2009-12-09
  • 打赏
  • 举报
回复
GridView控件自带排序(一)



1 using System;
2 using System.Data;
3 using System.Data.SqlClient;
4 using System.Configuration;
5 using System.Collections;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11 using System.Web.UI.HtmlControls;
12
13 public partial class Demo6 : System.Web.UI.Page
14 {
15 protected void Page_Load(object sender, EventArgs e)
16 {
17 if (Page.IsPostBack == false)
18 {
19 this.GridView.Attributes.Add("SortExpression", "UserID");
20 this.GridView.Attributes.Add("SortDirection", "ASC");
21
22 BindData();
23 }
24 }
25
26 public void BindData()
27 {
28 string sortExpression = this.GridView.Attributes["SortExpression"];
29 string sortDirection = this.GridView.Attributes["SortDirection"];
30
31 string strSql = "select UserID,C_Name,E_Name,QQ from Demo_User ";
32 DataTable dt = SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING, CommandType.Text, strSql, null).Tables[0];
33
34 // 根据GridView排序数据列及排序方向设置显示的默认数据视图
35 if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
36 {
37 dt.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection);
38 }
39
40 GridView.DataSource = dt;
41 GridView.DataBind();
42 }
43
44 protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
45 {
46 GridView.PageIndex = e.NewPageIndex;
47 BindData();
48 }
49
50 protected void GridView_Sorting(object sender, GridViewSortEventArgs e)
51 {
52 // 从事件参数获取排序数据列
53 string sortExpression = e.SortExpression.ToString();
54 // 假定为排序方向为“顺序”
55 string sortDirection = "ASC";
56 // “ASC”与事件参数获取到的排序方向进行比较,进行GridView排序方向参数的修改
57 if (sortExpression == this.GridView.Attributes["SortExpression"])
58 {
59 //获得下一次的排序状态
60 sortDirection = (this.GridView.Attributes["SortDirection"].ToString() == sortDirection ? "DESC" : "ASC");
61 }
62 // 重新设定GridView排序数据列及排序方向
63 this.GridView.Attributes["SortExpression"] = sortExpression;
64 this.GridView.Attributes["SortDirection"] = sortDirection;
65 BindData();
66
67 }
68 }





GridView控件自带排序(二)


1 using System;
2 using System.Data;
3 using System.Data.SqlClient;
4 using System.Configuration;
5 using System.Collections;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11 using System.Web.UI.HtmlControls;
12
13 public partial class Demo7 : System.Web.UI.Page
14 {
15 protected void Page_Load(object sender, EventArgs e)
16 {
17 if (Page.IsPostBack == false)
18 {
19 ViewState["SortOrder"] = "UserID";
20 ViewState["OrderDire"] = "ASC";
21
22 BindData();
23 }
24 }
25
26 public void BindData()
27 {
28 string sortExpression = this.GridView.Attributes["SortExpression"];
29 string sortDirection = this.GridView.Attributes["SortDirection"];
30
31 string strSql = "select UserID,C_Name,E_Name,QQ from Demo_User ";
32 DataTable dt = SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING, CommandType.Text, strSql, null).Tables[0];
33
34 DataView dv = dt.DefaultView;
35 string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
36 dv.Sort = sort;
37
38 GridView.DataSource = dt;
39 GridView.DataBind();
40 }
41
42 protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
43 {
44 GridView.PageIndex = e.NewPageIndex;
45 BindData();
46 }
47
48 protected void GridView_Sorting(object sender, GridViewSortEventArgs e)
49 {
50 string sPage = e.SortExpression;
51 if (ViewState["SortOrder"].ToString() == sPage)
52 {
53 if (ViewState["OrderDire"].ToString() == "Desc")
54 ViewState["OrderDire"] = "ASC";
55 else
56 ViewState["OrderDire"] = "Desc";
57 }
58 else
59 {
60 ViewState["SortOrder"] = e.SortExpression;
61 }
62 BindData();
63
64 }
65 }
66
67
68

1 <table align="center" bgcolor="#c0de98" border="0" cellpadding="0" cellspacing="1" width="99%">
2 <tr>
3 <th colspan="2">
4 GridView演示</th>
5 </tr>
6 <tr>
7 <td colspan="2" style="width: 100%;" >
8 <asp:GridView ID="GridView" runat="server" Width="100%" AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanging="GridView_PageIndexChanging" PageSize="12" AllowSorting="True" OnSorting="GridView_Sorting" >
9 <Columns>
10 <asp:BoundField DataField="UserID" HeaderText="UserID" SortExpression="UserID" />
11 <asp:BoundField DataField="C_Name" HeaderText="中文名字" SortExpression="C_Name" />
12 <asp:BoundField DataField="E_Name" HeaderText="英文名字" SortExpression="E_Name" />
13 <asp:BoundField DataField="QQ" HeaderText="QQ帐号" SortExpression="QQ" />
14 </Columns>
15 <RowStyle HorizontalAlign="Center" />
16 <PagerStyle HorizontalAlign="Right" />
17 </asp:GridView>
18 </td>
19 </tr>
20
21
22 </table>


cuike519 2009-12-09
  • 打赏
  • 举报
回复
look this:
http://www.codeproject.com/KB/grid/multicolumn_sort.aspx
r_yuan 2009-12-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pony_yu 的回复:]
GridView控件自带排序(一)


C# code1using System;2using System.Data;3using System.Data.SqlClient;4using System.Configuration;5using System.Collections;6using System.Web;7using System.Web.Security;8using System.Web.UI;9using System.Web.UI.WebControls;10using System.Web.UI.WebControls.WebParts;11using System.Web.UI.HtmlControls;1213publicpartialclass Demo6 : System.Web.UI.Page14 {15protectedvoid Page_Load(object sender, EventArgs e)16 {17if (Page.IsPostBack==false)18 {19this.GridView.Attributes.Add("SortExpression","UserID");20this.GridView.Attributes.Add("SortDirection","ASC");2122 BindData();23 }24 }2526publicvoid BindData()27 {28string sortExpression=this.GridView.Attributes["SortExpression"];29string sortDirection=this.GridView.Attributes["SortDirection"];3031string strSql="select UserID,C_Name,E_Name,QQ from Demo_User";32 DataTable dt= SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING, CommandType.Text, strSql,null).Tables[0];3334// 根据GridView排序数据列及排序方向设置显示的默认数据视图35if ((!string.IsNullOrEmpty(sortExpression))&& (!string.IsNullOrEmpty(sortDirection)))36 {37 dt.DefaultView.Sort=string.Format("{0} {1}", sortExpression, sortDirection);38 }3940 GridView.DataSource= dt;41 GridView.DataBind();42 }4344protectedvoid GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)45 {46 GridView.PageIndex= e.NewPageIndex;47 BindData();48 }4950protectedvoid GridView_Sorting(object sender, GridViewSortEventArgs e)51 {52// 从事件参数获取排序数据列53string sortExpression= e.SortExpression.ToString();54// 假定为排序方向为“顺序”55string sortDirection="ASC";56// “ASC”与事件参数获取到的排序方向进行比较,进行GridView排序方向参数的修改57if (sortExpression==this.GridView.Attributes["SortExpression"])58 {59//获得下一次的排序状态60 sortDirection= (this.GridView.Attributes["SortDirection"].ToString()== sortDirection?"DESC" :"ASC");61 }62// 重新设定GridView排序数据列及排序方向63this.GridView.Attributes["SortExpression"]= sortExpression;64this.GridView.Attributes["SortDirection"]= sortDirection;65 BindData();6667 }68 }


GridView控件自带排序(二)

C# code1using System;2using System.Data;3using System.Data.SqlClient;4using System.Configuration;5using System.Collections;6using System.Web;7using System.Web.Security;8using System.Web.UI;9using System.Web.UI.WebControls;10using System.Web.UI.WebControls.WebParts;11using System.Web.UI.HtmlControls;1213publicpartialclass Demo7 : System.Web.UI.Page14 {15protectedvoid Page_Load(object sender, EventArgs e)16 {17if (Page.IsPostBack==false)18 {19 ViewState["SortOrder"]="UserID";20 ViewState["OrderDire"]="ASC";2122 BindData();23 }24 }2526publicvoid BindData()27 {28string sortExpression=this.GridView.Attributes["SortExpression"];29string sortDirection=this.GridView.Attributes["SortDirection"];3031string strSql="select UserID,C_Name,E_Name,QQ from Demo_User";32 DataTable dt= SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING, CommandType.Text, strSql,null).Tables[0];3334 DataView dv= dt.DefaultView;35string sort= (string)ViewState["SortOrder"]+""+ (string)ViewState["OrderDire"];36 dv.Sort= sort;3738 GridView.DataSource= dt;39 GridView.DataBind();40 }4142protectedvoid GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)43 {44 GridView.PageIndex= e.NewPageIndex;45 BindData();46 }4748protectedvoid GridView_Sorting(object sender, GridViewSortEventArgs e)49 {50string sPage= e.SortExpression;51if (ViewState["SortOrder"].ToString()== sPage)52 {53if (ViewState["OrderDire"].ToString()=="Desc")54 ViewState["OrderDire"]="ASC";55else56 ViewState["OrderDire"]="Desc";57 }58else59 {60 ViewState["SortOrder"]= e.SortExpression;61 }62 BindData();6364 }65 }6667681<table align="center" bgcolor="#c0de98" border="0" cellpadding="0" cellspacing="1" width="99%">2<tr>3<th colspan="2">4 GridView演示</th>5</tr>6<tr>7<td colspan="2" style="width: 100%;">8<asp:GridView ID="GridView" runat="server" Width="100%" AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanging="GridView_PageIndexChanging" PageSize="12" AllowSorting="True" OnSorting="GridView_Sorting">9<Columns>10<asp:BoundField DataField="UserID" HeaderText="UserID" SortExpression="UserID"/>11<asp:BoundField DataField="C_Name" HeaderText="中文名字" SortExpression="C_Name"/>12<asp:BoundField DataField="E_Name" HeaderText="英文名字" SortExpression="E_Name"/>13<asp:BoundField DataField="QQ" HeaderText="QQ帐号" SortExpression="QQ"/>14</Columns>15<RowStyle HorizontalAlign="Center"/>16<PagerStyle HorizontalAlign="Right"/>17</asp:GridView>18</td>19</tr>202122</table>
[/Quote]习惯用这种方法
mengxj85 2009-12-09
  • 打赏
  • 举报
回复
UP,自带的简单些
三碗猪脚 2009-12-09
  • 打赏
  • 举报
回复
用juery.tablesorter 比这个爽多了,而且在客户端执行,不回传服务器
wuyq11 2009-12-08
  • 打赏
  • 举报
回复
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowSorting="true" OnSorting="GridView1_Sorting" AllowPaging="true" PageSize="10" OnPageIndexChanging="GridView1_PageIndexChanging">
<Columns>
<asp:BoundField DataField="id" HeaderText="代码" SortExpression="id"/>
<asp:BoundField DataField="name" HeaderText="名称" SortExpression="name"/>
<asp:TemplateField SortExpression="BUID" HeaderText="BUID">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text=' <%# Bind("ID") %>' ToolTip=' <%# DataBinder.Eval(Container.DataItem, "ID") %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
ViewState["SortOrder"] = "deptid";
ViewState["OrderDire"] = "asc";
BindGridView();
}
}

protected void BindGridView()
{

DataSet ds = new DataSet();


DataView dv = ds.Tables[0].DefaultView;
string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
dv.Sort = sort;
this.GridView1.DataSource = dv;

this.GridView1.DataBind();

}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string vortExp = e.SortExpression;
if (ViewState["SortOrder"].ToString() == vortExp)
{
if ((string)ViewState["OrderDire"] == "desc")
{
ViewState["OrderDire"] = "asc";
}
else if ((string)ViewState["OrderDire"] == "asc")
{
ViewState["OrderDire"] = "desc";
}
}
else
{
ViewState["SortOrder"] = e.SortExpression;
}
BindGridView();

}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
BindGridView();
}

polarissky 2009-12-08
  • 打赏
  • 举报
回复
其实两种方法差别不是很大,主要是保存上次排序状态,排序事件触发时更改排序状态,给数据显示控件重新绑定数据源。
liuyjcel 2009-12-08
  • 打赏
  • 举报
回复
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{

if (ViewState["order"] == null)
{
ViewState["order"] = "ASC";
}
else
{
if (ViewState["order"].ToString() == "ASC")
{
ViewState["order"] = "DESC";
}
else
{
ViewState["order"] = "ASC";
}
}
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
da.Fill(ds);
ds.Tables[0].DefaultView.Sort =e.SortExpression +" "+ViewState["order"] ;
this.GridView1.DataSource =ds.Tables[0];
GridView1.DataBind();
}
这样也可以,不过建议使用上面的那种.
liuyjcel 2009-12-08
  • 打赏
  • 举报
回复
后代主要代码:

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;
  using System.Data.SqlClient;
  public partial class Default3 : System.Web.UI.Page
  {
  //清清月儿的博客http://blog.csdn.net/21aspnet
  SqlConnection sqlcon;
  string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=";
  protected void Page_Load(object sender, EventArgs e)
  {
  if (!IsPostBack)
  {
  ViewState["SortOrder"] = "身份证号码";
  ViewState["OrderDire"] = "ASC";
  bind();
  }
  }
  protected void GridView1_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();
  }
  public void bind()
  {
  string sqlstr = "select top 5 * from 飞狐工作室";
  sqlcon = new SqlConnection(strCon);
  SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
  DataSet myds = new DataSet();
  sqlcon.Open();
  myda.Fill(myds, "飞狐工作室");
  DataView view = myds.Tables["飞狐工作室"].DefaultView;
  string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
  view.Sort = sort;
  GridView1.DataSource = view;
  GridView1.DataBind();
  sqlcon.Close();
  }
  }


  前台主要代码: 


<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
CellPadding="3" Font-Size="9pt" OnSorting="GridView1_Sorting" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px">
<FooterStyle BackColor="White" ForeColor="#000066" />
<Columns>
<asp:BoundField DataField="身份证号码" HeaderText="用户ID" SortExpression="身份证号码" />
<asp:BoundField DataField="姓名" HeaderText="用户姓名

" SortExpression="姓名"/>
<asp:BoundField DataField="员工性别" HeaderText="性别" SortExpression="员工性别"/>
<asp:BoundField DataField="家庭住址" HeaderText="家庭住址" SortExpression="家庭住址"/>

</Columns>
<RowStyle ForeColor="#000066" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
</asp:GridView>


62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧