大神哥哥,该如何处理

大神哥哥
本帖最后由 zhoucc910311 于 2015-01-17 09:49:21 编辑
checkbox和分页能共存吗 
如何解决
求大神哥哥帮帮忙



------解决思路----------------------
不到问的什么问题,如果是分页后原来勾选的还是勾选的,你要通过get传参到下一页,自己再服务器端获取参数设置checkbox的checked属性或者js分析location.search获取相关数据后执行勾选都行
------解决思路----------------------
还可以使用cookie记录选中的,翻页回来的时候,进行选中
------解决思路----------------------
这是个asp.net的例子
<%@ Page Language="C#" Debug="false" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  String Articles = String.Empty;
  protected void Page_Load(object sender, EventArgs e)
  {
    if (Request.Cookies["ArticleId"]!=null)  Articles = Request.Cookies["ArticleId"].Value;
    Articles = Server.UrlDecode(Articles);  
    
    string xlsConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
------解决思路----------------------
DataDirectory
------解决思路----------------------
MengxianHui.mdb";
    OleDbConnection cn = new OleDbConnection(xlsConnStr);
    cn.Open();
    String sql = "SELECT Count(*) FROM [Document]";
    OleDbCommand cmd = new OleDbCommand(sql, cn);

    // 总的记录数
    int TotalCount = Convert.ToInt32(cmd.ExecuteScalar());

    //当前页的序号
    int PageIndex = 1;
    String page = Request.QueryString["Page"];
    if (page == null) page = "1";
    if (!Int32.TryParse(page, out PageIndex)) PageIndex = 1;
    if (PageIndex < 1) PageIndex = 1;

    //每页显示的数量
    int PageItem = 5;
    int startRecord = (PageIndex - 1) * PageItem;

    sql = "SELECT [ArticleId],[Title],[CreateDate],[Author] FROM [Document] Order By [ArticleId] DESC";
    OleDbDataAdapter da = new OleDbDataAdapter(sql, cn);
    DataSet ds = new DataSet();
    da.Fill(ds, startRecord, PageItem, "Document");

    GridView1.DataSource = ds.Tables[0].DefaultView;
    GridView1.DataBind();

    BuildPagers(TotalCount, PageIndex, PageItem);
    cn.Dispose();
  }

  private void BuildPagers(int TotalCountRecord, int CurrentPage, int PageItem)
  {
    int Step = 6;
    int LeftNum = 0;
    int RightNum = 0;
    String PageUrl = "?";
    int PageCount = (int)Math.Ceiling((double)(TotalCountRecord) / PageItem);
    if (CurrentPage - Step < 1)
    {
      LeftNum = 1;
    }
    else
    {
      LeftNum = CurrentPage - Step;
    }

    if (CurrentPage + Step > PageCount)
    {
      RightNum = PageCount;
    }
    else
    {
      RightNum = CurrentPage + Step;
    }
    string OutPut = "";
    for (int i = LeftNum; i <= RightNum; i++)
    {
      if (i == CurrentPage)
      {
        OutPut += "<span style='color:red'>" + i.ToString() + "</span> ";
      }
      else
      {
        OutPut += "<a href=\"" + PageUrl + "Page=" + i.ToString() + "\">" + i.ToString() + "</a> ";
      }
    }
    if (CurrentPage > 1)
    {
      OutPut = "<a href='" + PageUrl + "Page=1'>首页</a>  <a href=\"" + PageUrl + "Page=" + (CurrentPage - 1) + "\">上一页</a> " + OutPut;
    }

    if (CurrentPage < PageCount)
    {
      OutPut += " <a href=\"" + PageUrl + "Page=" + (CurrentPage + 1) + "\">下一页</a> <a href='" + PageUrl + "Page=" + PageCount + "'>末页</a>";
    }
    Pager.InnerHtml = OutPut;
  }

  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
      String CurrentArticleId = DataBinder.Eval(e.Row.DataItem, "ArticleId").ToString();
      CheckBox ArticleId = e.Row.FindControl("ArticleId") as CheckBox;
      ArticleId.Attributes.Add("onclick", "SetArticleId(this," + CurrentArticleId + ")");
      if (Articles.IndexOf("
------解决思路----------------------
" + CurrentArticleId + "
------解决思路----------------------
") > -1)
      {
        ArticleId.Checked = true;
      }
    }
  }

  protected void Button1_Click(object sender, EventArgs e)
  {
    String[] ids = Articles.Split('
------解决思路----------------------
');
    for (int i = 0; i < ids.Length; i++)
    {
      if (!ids[i].Trim().Equals(String.Empty))
      {
        Response.Write("<li>" + ids[i]);
      }
    }
  }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>GET 方式实现 GridView 跨页面多选</title>
  <script type="text/javascript">
    function SetArticleId(o, i) {
      if (o.checked) {
        AddCookie(i)
      }
      else {
        RemoveCookie(i)
      }
    }
    function SetCookie(name, value) {
      document.cookie = name + "=" + escape(value);
    }
    function GetCookie(name) {
      if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(name + "=");
        if (c_start != -1) {
          c_start = c_start + name.length + 1;
          c_end = document.cookie.indexOf(";", c_start);
          if (c_end == -1) c_end = document.cookie.length;
          return unescape(document.cookie.substring(c_start, c_end));
        }
      }
      return "";
    }
    function AddCookie(i) {
      d = GetCookie("ArticleId");
      if (d == "") d = "
------解决思路----------------------
";
      if (d.indexOf("
------解决思路----------------------
" + i + "
------解决思路----------------------
") == -1) {
        d += i + "
------解决思路----------------------
";
        SetCookie("ArticleId", d);
      }
    }

    function RemoveCookie(i) {
      d = GetCookie("ArticleId");
      var reg = new RegExp("\\
------解决思路----------------------
" + i + "\\
------解决思路----------------------
");
      if (reg.test(d)) {
        d = d.replace(reg, "
------解决思路----------------------
");  
        SetCookie("ArticleId", d);
      }    
    }    
  </script>
</head>
<body>
  <form id="form1" runat="server">
  <asp:GridView ID="GridView1" runat="server"  CellPadding="6"
  ShowHeader="false" OnRowDataBound="GridView1_RowDataBound">
    <Columns>
      <asp:TemplateField>
        <ItemTemplate>
          <asp:CheckBox ID="ArticleId" runat="server" /></ItemTemplate>
      </asp:TemplateField>
    </Columns>
  </asp:GridView>
  <div id="Pager" runat="server"></div>
  
  <asp:Button ID="Button1" runat="server" Text="查看所选择的ID"
    onclick="Button1_Click" />
  </form>
</body>
</html>