如何通过单击列标题对gridview中的数据进行排序

编程入门 行业动态 更新时间:2024-10-27 23:27:46
本文介绍了如何通过单击列标题对gridview中的数据进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我在ASP.NET 3.5中有一个gridview,并且启用了Auto-Generated Filed,我希望通过单击网格标题对数据进行排序。我怎样才能做到这一点?我搜索了互联网,但大多数都使用html中的列,但是我没有,因为它们是自动生成的。谢谢

解决方案

为了排序,你必须绑定网格...

私有 void LoadGrid( string sortExpr, string sortDirection) { DataSet ds = new DataSet(); SqlDataAdapter SqlDA = new SqlDataAdapter( 选择*来自tablename order by + sortExpr + + sortDirection + ,connectionString); SqlDA.Fill(ds); if (ds!= null ) { gdManageForm。 DataSource = ds; gdManageForm.EditIndex = -1; gdManageForm.DataBind(); } } 受保护 void gdManageForm_Sorting( object sender,GridViewSortEventArgs e) { string sortExpression = e.SortExpression; ViewState [ SortExpression] = sortExpression; if (GridViewSortDirection == SortDirection.Ascending) { GridViewSortDirection = SortDirection.Descending; SortGridView(sortExpression,DESCENDING); } else { GridViewSortDirection = SortDirection.Ascending; SortGridView(sortExpression,ASCENDING); } } 私有 void SortGridView( string sortExpression, string 方向) { // 如果是默认状态 LoadGrid(sortExpression,direction); } 私人 SortDirection GridViewSortDirection { get { if (ViewState [ sortDirection] == null ) ViewState [ sortDirection] = SortDirection.Ascending; return (SortDirection)ViewState [ sortDirection ]; } set {ViewState [ sortDirection] = value ; } }

如果您有任何疑问请告诉我

static SortDirection GridViewSortDirection; protected void chequegrid_Sorting(object sender,GridViewSortEventArgs e) { string sortExpression = e.SortExpression; ViewState [SortExpression] = sortExpression; if(GridViewSortDirection == SortDirection.Ascending) { GridViewSortDirection = SortDirection.Descending; SortGridView(sortExpression,DESCENDING); } else { GridViewSortDirection = SortDirection.Ascending; SortGridView(sortExpression,ASCENDING); } } public void SortGridView(string sortExpression,string direction) { if(sortExpression ==ss) { string s; if(direction ==DESCENDING) { s =order by dbo.registration.id desc; } else { s =dbo.registration.id的订单; } bindbysort(s); } } public void bindbysort(string expre) { DataSet ds = new DataSet(); ds = ck.bindgrid(expre); if(ds.Tables [0] .Rows.Count> 0) { chequegrid.DataSource = ds; Label1.Text = ds.Tables [0] .Rows.Count.ToString()+Result Found; chequegrid.DataBind(); } 其他 { chequegrid.DataSource = null; chequegrid.DataBind(); } }

aspx

< asp:gridview id = chequegrid runat = server autogeneratecolumns = False allowsorting = true xmlns:asp = #unknown > CellPadding = 4 ForeColor = #333333 GridLines = 无 EmptyDataText = 没有生成任何检查但这段时间。 CssClass = table-bordered table g宽度= 100% onsorting = chequegrid_Sorting > < alternatingrowstyle backcolor = 白色 forecolor = #284775 /> < columns> < asp:templatefield headertext = 客户ID sortexpression = ss > <&的ItemTemplate GT; < asp:label id = Label1 runat = server > Text = ' <%#Eval(customer_reg_id)%>' > < / asp:label > < / itemtemplate > < / asp:templatefield > < asp:templatefield headertext = 客户名称 > < itemtemplate> < asp:label id = Label1 runat = server > Text = ' <%#Eval(name)%>' > < / asp:label > < / itemtemplate > < / asp:templatefield > < asp:templatefield headertext = Date From > <&的ItemTemplate GT; < asp:label id = Label1 runat = server text = <%#Convert.ToDateTime(Eval( date_from ))。ToString( dd MMMM,yyyy )%> > < / asp:label > < / itemtemplate > < / asp:templatefield > < asp:templatefield headertext = Date To > < ; ItemTemplate中> < asp:label id = Label2 runat = server text = <%#Convert.ToDateTime(Eval( date_to ))。ToString( dd MMMM,yyyy )%> > < / asp:label > < / itemtemplate > < / asp:templatefield > < asp:templatefield headertext = 检查金额 > < ; ItemTemplate中> < asp:label id = Label3 runat = server text = <%#Eval( income )+ / - %> > < / asp:label > < / itemtemplate > < / asp:templatefield > < asp:templatefield headertext = Ge nerated On > < itemtemplate> < asp:label id = Label4 runat = server text = <%#Convert.ToDateTime(Eval( date_of_clear ))。ToString( dd MMMM,yyyy )%> > < / asp:label > < / itemtemplate > < / asp:templatefield > < / 列 > < / asp:gridview >

I have a gridview in ASP.NET 3.5 and Auto-Generated Filed is enabled and I want to sort data by clicking the grid header. how can I do that? I searched internet but most of it work with the columns from html but mine don't have since they are auto generated. Thanks

解决方案

For sorting you have to bind the grid...

private void LoadGrid(string sortExpr, string sortDirection) { DataSet ds = new DataSet(); SqlDataAdapter SqlDA = new SqlDataAdapter("Select * from tablename order by "+sortExpr+" "+sortDirection+"", connectionString); SqlDA.Fill(ds); if (ds != null) { gdManageForm.DataSource = ds; gdManageForm.EditIndex = -1; gdManageForm.DataBind(); } } protected void gdManageForm_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = e.SortExpression; ViewState["SortExpression"] = sortExpression; if (GridViewSortDirection == SortDirection.Ascending) { GridViewSortDirection = SortDirection.Descending; SortGridView(sortExpression, DESCENDING); } else { GridViewSortDirection = SortDirection.Ascending; SortGridView(sortExpression, ASCENDING); } } private void SortGridView(string sortExpression, string direction) { //If it is default state LoadGrid(sortExpression, direction); } private SortDirection GridViewSortDirection { get { if (ViewState["sortDirection"] == null) ViewState["sortDirection"] = SortDirection.Ascending; return (SortDirection)ViewState["sortDirection"]; } set { ViewState["sortDirection"] = value; } }

If you have any doubts let me know

static SortDirection GridViewSortDirection; protected void chequegrid_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = e.SortExpression; ViewState["SortExpression"] = sortExpression; if (GridViewSortDirection == SortDirection.Ascending) { GridViewSortDirection = SortDirection.Descending; SortGridView(sortExpression, "DESCENDING"); } else { GridViewSortDirection = SortDirection.Ascending; SortGridView(sortExpression, "ASCENDING"); } } public void SortGridView(string sortExpression, string direction) { if (sortExpression == "ss") { string s; if(direction =="DESCENDING") { s = "order by dbo.registration.id desc"; } else { s = "order by dbo.registration.id"; } bindbysort(s); } } public void bindbysort(string expre) { DataSet ds = new DataSet(); ds = ck.bindgrid(expre); if (ds.Tables[0].Rows.Count > 0) { chequegrid.DataSource = ds; Label1.Text = ds.Tables[0].Rows.Count.ToString() + " Result Found"; chequegrid.DataBind(); } else { chequegrid.DataSource = null; chequegrid.DataBind(); } }

aspx

<asp:gridview id="chequegrid" runat="server" autogeneratecolumns="False" allowsorting="true" xmlns:asp="#unknown"> CellPadding="4" ForeColor="#333333" GridLines="None" EmptyDataText="There is no any cheque generated yet for this time duration." CssClass="table-bordered table g" Width="100%" onsorting="chequegrid_Sorting"> <alternatingrowstyle backcolor="White" forecolor="#284775" /> <columns> <asp:templatefield headertext="Customer Id" sortexpression="ss"> <itemtemplate> <asp:label id="Label1" runat="server"> Text='<%# Eval("customer_reg_id") %>'></asp:label> </itemtemplate> </asp:templatefield> <asp:templatefield headertext="Customer Name"> <itemtemplate> <asp:label id="Label1" runat="server"> Text='<%# Eval("name") %>'></asp:label> </itemtemplate> </asp:templatefield> <asp:templatefield headertext="Date From"> <itemtemplate> <asp:label id="Label1" runat="server" text="<%# Convert.ToDateTime(Eval("date_from")).ToString("dd MMMM, yyyy") %>"></asp:label> </itemtemplate> </asp:templatefield> <asp:templatefield headertext="Date To"> <itemtemplate> <asp:label id="Label2" runat="server" text="<%# Convert.ToDateTime(Eval("date_to")).ToString("dd MMMM, yyyy") %>"> </asp:label> </itemtemplate> </asp:templatefield> <asp:templatefield headertext="Cheque Amount"> <itemtemplate> <asp:label id="Label3" runat="server" text="<%# Eval("income") +"/-" %>"></asp:label> </itemtemplate> </asp:templatefield> <asp:templatefield headertext="Generated On"> <itemtemplate> <asp:label id="Label4" runat="server" text="<%# Convert.ToDateTime(Eval("date_of_clear")).ToString("dd MMMM, yyyy") %>"></asp:label> </itemtemplate> </asp:templatefield> </columns> </asp:gridview>

更多推荐

如何通过单击列标题对gridview中的数据进行排序

本文发布于:2023-11-04 06:40:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1557218.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单击   标题   数据   gridview

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!