DataGrid排序

#region 事件
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面   
   
   if(!this.IsPostBack)
   {
    FillListFileType();
    FillListGrade();
    //排序字段
    SortField="id";
    //排序方向
    SortDirection=" desc";
    ChangeDataGridHeader(dGridFileList);
    this.StrWhere = " deleted_state = 0";
    if(Request["page"] != null)
    {
     GridDataBind(int.Parse(Request["page"].ToString()));
    }
    else
    {
     GridDataBind(1);
    }
    
    ShowSearch();    
   }
  }
  
  /// <summary>
  /// 搜索按钮触发此事件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void btnSearch_Click(object sender, System.EventArgs e)
  {
   ShowList();
   StrWhere = SqlSearch();
   GridDataBind(1);
   ShowList();
  }

  /// <summary>
  /// 重置按钮触发此事件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void btnReset_Click(object sender, System.EventArgs e)
  {
   this.txtBoxFileName.Text          = "";
   this.dDListFileType.SelectedIndex = -1;
   this.dDownListGrade.SelectedIndex = -1;
   //Response.Redirect("FileSearch.aspx");
   this.areaUserControl1.RefreshData();
  }

  /// <summary>
  /// 翻页事件
  /// </summary>
  /// <param name="src"></param>
  /// <param name="e"></param>
  private void AspNetPager1_PageChanged(object src, PageChangedEventArgs e)
  {
   GridDataBind(e.NewPageIndex);
   System.Text.StringBuilder sb = new StringBuilder("<script Language=/"Javascript/"><!--/n");
   sb.Append("var el=document.all;");
   sb.Append(dGridFileList.ClientID);
   sb.Append(".scrollIntoView(true);");
   sb.Append("<");
   sb.Append("/");
   sb.Append("script>");
   if(!Page.IsStartupScriptRegistered("scrollScript"))
    Page.RegisterStartupScript("scrollScript",sb.ToString());
  }

  private void dGridFileList_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
    if(e.CommandName=="Detail")
    {
     int fileID = int.Parse(dGridFileList.DataKeys[e.Item.ItemIndex].ToString());
     LoadFileDetail(fileID);
     ShowDetail();
     
    }
   }
  }

  private void dGridFileList_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   
  }

  /// <summary>
  /// 返回按钮触发此事件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void btnReturn_Click(object sender, System.EventArgs e)
  {
   ShowList();
  }
  #endregion

 

#region 加载数据

  /// <summary>
  /// 绑定DataGrid
  /// </summary>
  /// <param name="PageNo"></param>
  private void GridDataBind(int PageNo)
  {   
   int iRecordCount = 0;
   int iPageCount   = 0;
   
   System.Data.DataTable dt = ModuleHelper.GetSearchDataTable("explanation_file_list","id",""+StrWhere+"","",this.AspNetPager1.PageSize,PageNo,1,out iPageCount,out iRecordCount);
   if(dt == null)
   {
    return;
   }
   dGridFileList.DataKeyField="id";
   dGridFileList.DataSource      = dt.DefaultView;
   dt.DefaultView.Sort           = this.Sort;
   this.AspNetPager1.RecordCount = iRecordCount;

   this.AspNetPager1.CurrentPageIndex = PageNo;
   if(iPageCount<PageNo)
   {
    PageNo=iPageCount;
    GridDataBind(PageNo);
   }
   dGridFileList.DataBind();
   //以下绑定非编辑状态下拉列表
   foreach(DataGridItem dgi in dGridFileList.Items)
   { 
    this.dGridFileList.Items[dgi.ItemIndex].Cells[3].Text = this.areaUserControl1.AreaName+" "+this.areaUserControl1.CityName+" "+this.areaUserControl1.TownName;
    this.dGridFileList.Items[dgi.ItemIndex].Cells[5].Text = !bool.Parse(this.dGridFileList.Items[dgi.ItemIndex].Cells[4].Text)?"景点":"景区";
    this.dGridFileList.Items[dgi.ItemIndex].Cells[8].Text = Common.CommonHelper.GetFormatString(Double.Parse(IsDouble(this.dGridFileList.Items[dgi.ItemIndex].Cells[7].Text)));
   }

   AspNetPager1.CustomInfoText  ="记录总数:<font color=/"blue/"><b>"+AspNetPager1.RecordCount.ToString()+"</b>";
   AspNetPager1.CustomInfoText += " 总页数:<font color=/"blue/"><b>"+AspNetPager1.PageCount.ToString()+"</b>";
   AspNetPager1.CustomInfoText += " 当前页:<font color=/"red/"><b>"+PageNo.ToString()+"</b>";
  }

  private string IsDouble(string d)
  {
   if(d == string.Empty || d == "&nbsp;")
   {
    return "0";
   }
   return d;   
  }

  /// <summary>
  /// 加载文件类型
  /// </summary>
  private void FillListFileType()
  {
   
   DataTable dt = ModuleHelper.GetAllFileType();
   if(dt == null)
   {
    return;
   }
   
   this.dDListFileType.DataSource     = dt.DefaultView;
   this.dDListFileType.DataTextField  = "name";
   this.dDListFileType.DataValueField = "id";
   this.dDListFileType.DataBind();
  }

  /// <summary>
  /// 加载星级
  /// </summary>
  private void FillListGrade()
  {
 
   DataTable dt = ModuleHelper.GetAllGrade();
   if(dt == null)
   {
    return;
   }

   this.dDownListGrade.DataSource     = dt.DefaultView;
   this.dDownListGrade.DataTextField  = "name";
   this.dDownListGrade.DataValueField = "id";
   this.dDownListGrade.DataBind();
  }

  /// <summary>
  /// 加载详细信息
  /// </summary>
  /// <param name="fileID"></param>
  private void LoadFileDetail(int fileID)
  {
   if(fileID==0)
   {
    return;
   }
   
   System.Data.DataTable dt = ModuleHelper.GetFileDetailDataTable(fileID);

   if(dt.Rows.Count == 1)
   {
    this.lbName.Text=dt.Rows[0]["name"].ToString();
    this.lbContentSort.Text=dt.Rows[0]["content_sort_name"].ToString();
    this.lbArea.Text=dt.Rows[0]["area_name"].ToString();
    this.lbImage.Text=dt.Rows[0]["pic"].ToString();
    this.lbFileType.Text=dt.Rows[0]["file_type_name"].ToString();
    this.lbFormat.Text=dt.Rows[0]["pre_format_name"].ToString();
    this.lbFileSize.Text=Common.CommonHelper.GetFormatString(double.Parse(dt.Rows[0]["sizes"].ToString()));
    this.lbUpLoadTime.Text=dt.Rows[0]["upload_time"].ToString();
    this.lbDownLoadTimes.Text=dt.Rows[0]["down_times"].ToString();
    this.lbGrade.Text=dt.Rows[0]["grade_name"].ToString();
    this.lbIntegral.Text="";
    this.lbRecommend.Text=!bool.Parse(dt.Rows[0]["is_recommendation"].ToString())?"否":"是";
    this.HyperLink1.NavigateUrl=string.Format("DownLoadFile.aspx?id={0}",fileID);
   }   
  }
  #endregion

 

#region 属性

  /// <summary>
  /// 获得搜索条件
  /// </summary>
  public string StrWhere
  {
   get
   {
    if(ViewState["StrWhere"]==null)
    {
     return null;
    }
    else
    {
     if(ViewState["StrWhere"].ToString()=="")
     {
      return null;
     }
     else
     {
      return ViewState["StrWhere"].ToString();
     }
    }
   }
   set
   {
    ViewState["StrWhere"]=value;
   }
  }

  /// <summary>
  ///  SortDirection 排序方向
  /// </summary>
  public string SortDirection
  {
   get
   {
    if(ViewState["SortDirection"]==null)
    {
     return null;
    }
    else
    {
     if(ViewState["SortDirection"].ToString()=="")
     {
      return null;
     }
     else
     {
      return ViewState["SortDirection"].ToString();
     }
    }
   }
   set
   {
    ViewState["SortDirection"]=value;
   }
  }

  /// <summary>
  /// SortField 排序字段
  /// </summary>
  public string SortField
  {
   get
   {
    if(ViewState["SortField"]==null)
    {
     return null;
    }
    else
    {
     if(ViewState["SortField"].ToString()=="")
     {
      return null;
     }
     else
     {
      return ViewState["SortField"].ToString();
     }
    }
   }
   set
   {
    ViewState["SortField"]=value;
   }
  }
  
  /// <summary>
  /// 拼装排序条件
  /// </summary>
  private string Sort
  {
   get
   {
    return this.SortField + " " + this.SortDirection;
   }
  }
  #endregion

 

#region DataGrid排序
  
  /// <summary>
  /// 修改列头样式ChangeDataGridHeader
  /// </summary>
  /// <param name="dg"></param>
  private void ChangeDataGridHeader(DataGrid dg)
  {
   for (int i = 0;i < dg.Columns.Count - 1;i++)
   {
    dg.Columns[i].HeaderText = dg.Columns[i].HeaderText.Replace("▲", "").Replace("▼", "");
    string name = dg.Columns[i].SortExpression;
    if (SortField == dg.Columns[i].SortExpression)
    {
     if (SortDirection == " DESC")
     {
      dg.Columns[i].HeaderText += "▼";
     }
     else
     {
      dg.Columns[i].HeaderText += "▲";
     }
     return;
    }
   }
  }
  
  private void dGridFileList_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
  {
   if(this.SortField==e.SortExpression)
   {
    //处理排序方向
    if(this.SortDirection==" DESC")
    {
     this.SortDirection=" ASC";
    }
    else
    {
     this.SortDirection=" DESC";
    }
   }
   else
   {
    this.SortField=e.SortExpression;
    this.SortDirection=" ASC";
   }

   ChangeDataGridHeader(dGridFileList);

   //this.AspNetPager1.OnSortChanged();
   this.GridDataBind(this.AspNetPager1.CurrentPageIndex);;
  }
  #endregion  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataGrid是ASP.NET中非常重要的一个控件,可以方便地实现编辑和排序功能。默认情况下,DataGrid排序功能是升序(ASC)的。但是,我们可以通过一些解决方法实现DataGrid的升降序排列。 一个比较好的解决方法是在DataGrid的SortCommand事件中编写代码来实现。通过该事件,我们可以获取排序列的信息,并根据当前的排序状态进行相应的排序操作。具体的代码如下所示: ``` private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e) { string SortExpression = e.SortExpression.ToString(); string SortDirection = "ASC"; if(SortExpression == DataGrid1.Attributes["SortExpression"]) { SortDirection = (DataGrid1.Attributes["SortDirection"].ToString() == SortDirection ? "DESC" : "ASC"); } DataGrid1.Attributes["SortExpression"] = SortExpression; DataGrid1.Attributes["SortDirection"] = SortDirection; BindGrid(); } ``` 在这段代码中,我们首先获取要排序的列的表达式(SortExpression),然后判断当前的排序状态。如果当前的排序列与要排序的列一致,那么我们切换排序方向(从升序到降序,或者从降序到升序)。最后,我们将排序列和排序方向设置为DataGrid的属性,并重新绑定DataGrid。 另外,在执行排序操作之前,我们需要将数据绑定到一个DataView对象上,然后通过DataView的Sort属性来实现排序。具体的代码如下所示: ``` DataView dv = new DataView(); dv = ds.Tables.DefaultView; string SortExpression = DataGrid1.Attributes["SortExpression"]; string SortDirection = DataGrid1.Attributes["SortDirection"]; dv.Sort = SortExpression + " " + SortDirection; ``` 在这段代码中,我们首先将数据绑定到一个DataView对象(dv)上,然后通过DataGrid的属性获取排序列(SortExpression)和排序方向(SortDirection)。最后,我们将排序列和排序方向应用到DataView的Sort属性上,从而实现排序。 综上所述,我们可以通过编写事件代码和使用DataView来实现DataGrid的升降序排列。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [DataGrid自动排序](https://blog.csdn.net/djk8888/article/details/5290735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值