日期:2014-05-17  浏览次数:20541 次

GridView后面增加空行,排序后空行跑到前面去了
GridView分页数据不足,比如我每页要显示10行记录,当实际上GridView最后一页只有3条记录,我在其后补7条空行后,但是问题出来了,我点排序字段进行排序后,排序乱了,比如从小到大排序时,空行都显示到最前面去了。
注:每次排序,数据源都是重新读出来的,空行也是在读出来的datatable后面加的,但按ASC排序时,空行还是会跑到前面去。(一开始按ACS排序时,空行还是在前面,)

------解决方案--------------------
完整的代码
HTML code
<%@ Page Language="C#" Debug="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
 
  // 设置每页显示的行数  
  int TotalRowCount = 12;
  protected void Page_Load(object sender, EventArgs e)
  {
    if (!Page.IsPostBack)
    {
      System.Data.DataTable dt = new System.Data.DataTable();
      System.Data.DataRow dr;
      dt.Columns.Add(new System.Data.DataColumn("Id", typeof(System.Int32)));
      dt.Columns.Add(new System.Data.DataColumn("Name", typeof(System.String)));

      for (int i = 0; i < 8; i++)
      {
        dr = dt.NewRow();
        dr[0] = i.ToString();
        dr[1] = "【孟子E章】" + i.ToString();
        dt.Rows.Add(dr);
      }
      System.Data.DataView dv = dt.DefaultView;
      dv.Sort = "Id DESC"; //排序
      int addCount = TotalRowCount - dv.Table.Rows.Count;
      for (int i = 0; i < addCount; i++)
        dv.Table.Rows.Add();

      GridView1.DataSource = dt;
      GridView1.DataBind();
    }
  }

 
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>自动填充固定行数的 GridView</title>
</head>
<body>
  <form id="form1" runat="server">
  <asp:GridView ID="GridView1" runat="server">
  </asp:GridView>
  </form>
</body>
</html>