GridView 排序

这两天搞gridview 排序,发现gridview只有指定DataSourceid的时候才支持。因为datatable不主持排序,如果数据源是datatable的话需要自己定义。网上很多,方法到也很简单,记录做个备忘


ContractedBlock.gif ExpandedBlockStart.gif HTML代码
 <asp:GridView ID="GView" runat="server" AutoGenerateColumns="false" AllowPaging="true" 
      OnPageIndexChanging
="GView_PageIndexChanging"  AllowSorting="true" 
           onsorting
="GView_Sorting">
            
<Columns>
                
<asp:BoundField HeaderText="指标名称" DataField="showname" />
                
<asp:BoundField HeaderText="计量单位" DataField="itemunit" ItemStyle-HorizontalAlign="Center" />
                
<asp:BoundField HeaderText="偏差" DataField="chrData" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:#0.0%}"  SortExpression="chrData" />   //设置需要排序的列
            
</Columns>
        
</asp:GridView>
//指定Gridview运行排序,


 后台CS代码

ContractedBlock.gif ExpandedBlockStart.gif C#
//主要代码
    protected void GView_Sorting(object sender, GridViewSortEventArgs e)
    {
        GridViewSortExpression 
= e.SortExpression;

        GView.DataSource 
= SortDataTable((DataTable)GView.DataSource, false);
        GView.DataBind();

    }
//可以针对分页和不分页分别设置
 protected void GView_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GView.PageIndex 
= e.NewPageIndex;       
        GView.DataSource 
= SortDataTable((DataTable)GView.DataSource, true);
        GView.DataBind();
    }
    
private string GridViewSortDirection //设置属性,默认ASC
    {
        
get { return ViewState["SortDirection"== null ? "ASC" : ViewState["SortDirection"].ToString(); }
        
set { ViewState["SortDirection"= value; }
    }
    
private string GridViewSortExpression
    {
        
get { return ViewState["SortExpression"== null ? "" : ViewState["SortExpression"].ToString(); }
        
set { ViewState["SortExpression"= value; }
    }
    
private string GetSortDirection() //设置排序
    {
        
switch (GridViewSortDirection)
        {
            
case "ASC":

                GridViewSortDirection 
= "DESC";
                
break;
            
case "DESC":
                GridViewSortDirection 
= "ASC";
                
break;
        }
        
return GridViewSortDirection;
    }
 
//根据DataView 排序
    protected DataView SortDataTable(DataTable dataTable, bool isPageIndexChanging)
    {
        
if (dataTable != null)
        {
            DataView dataView 
= new DataView(dataTable);
            
if (GridViewSortExpression != string.Empty)
            {
                
if (isPageIndexChanging)
                {
                    dataView.Sort 
= string.Format("{0} {1}", GridViewSortExpression, GridViewSortDirection);
                }
                
else
                {
                    dataView.Sort 
= string.Format("{0} {1}", GridViewSortExpression, GetSortDirection());
                }
            }
            
return dataView;
        }

        
else
        {
            
return new DataView();
        }

    }

 

转载于:https://www.cnblogs.com/freeton/archive/2009/02/05/1384652.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值