重新绑定搜索结果时的asp.net gridview分页问题

时间:2012-05-01 19:10:29

标签: c# asp.net

我有一个网格视图,我在第一页加载时将其绑定,我在同一页面上有一些搜索选项,当点击搜索按钮时我查询seaarch并使用搜索结果中的新数据源重新绑定gridview ,问题是在重新绑定gridview之后我有分页问题,​​我在第一个pageload数据绑定中没有它们!谁能告诉我为什么会这样?!

这是我的Page_Load coe:

protected void Page_Load(object sender, EventArgs e)
{
    DisableChaching();
    string val = Convert.ToString(Session["AccessLevel"]);
    if (Request.Cookies["UserName"] == null)
    {
        if (Session["UserName"] == null)
        {
            Response.Redirect("~/Default.aspx");
        }
        else if (val   == "2")
        {
            Response.Redirect("~/Default.aspx");
        }
    }
    else if (val == "2")
    {
        Response.Redirect("~/Default.aspx");
    }
    if (!IsPostBack)
    {
        LoadControls();
        BindGrid();
    }
}

我的GV_PageIndexChanging:

protected void GV_PageIndexChanging(object sender, GridViewPageEventArgs e)
{

    GV.PageIndex = e.NewPageIndex;
    BindGrid();
    PageStatus(Status.None);
}

我的btnSearch_Click:

 protected void btnSearch_Click(object sender, ImageClickEventArgs e)
 {
query = new CommonQueries();
       GV.DataSource = query.getBooksByGroupIDSubGroupID(DrpGroup.SelectedItem.Value,DrpSubGroup.SelectedItem.Value);
     GV.DataBind();
 }

在CommonQueries Class中,我使用了这个查询:

    public List<Book> getBooksByGroupIDSubGroupID(string GroupID, string SubGroupID)
{
    db = new BookMarketDataContext();
    List<Book> list = new List<Book>();
    list = (from b in db.Books where b.GroupID.ToString() == GroupID && b.SubGroupID.ToString() == SubGroupID  orderby b.Name select b).ToList();
    return list;
}

更具体:在我的页面加载中,我对gridview页面更改没有任何问题 但是,在单击搜索按钮“btnSearch”并重新绑定gridview之后,如果搜索结果足以导致gridview具有页面编号,并且当我单击其中一个页面编号时,我得到的错误结果来自之前的page_Load!

1 个答案:

答案 0 :(得分:1)

您的分页回发似乎不包含有关应该分页的视图状态的信息。您应该将该信息推送到页面,以便将其包含在回发中,或将其存储在用户会话中(减少往返次数,在服务器上更多权重,但如果您还存储查询结果则响应速度更快)。 ..