ASP.NET为什么第2页上的Gridview Paging和其余部分都消失了?

时间:2012-11-30 20:26:46

标签: c# asp.net

我在GridView中有很多ServerName列表,所以我决定添加分页。数据显示第1页上的列表结果,但在第2页上,其余部分未显示任何内容。我在GridViewServer属性中已经有OnPageIndexChanging="GridViewServer_PageIndexChanging"。请帮忙!这是后面的c#代码,

protected void GridViewServer_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridViewServer.PageIndex = e.NewPageIndex;
        GridViewServer.DataBind();
    }

GridView绑定功能代码,

public void BindGridView()
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Database_Shared_NotebookConnectionString"].ConnectionString);

        conn.Open();

        string sqlquery = ("SELECT * FROM tblServer");

        SqlCommand command = new SqlCommand(sqlquery, conn);

        SqlDataAdapter adp = new SqlDataAdapter(command);

        DataSet ds = new DataSet();

        adp.Fill(ds);

        GridViewServer.DataSource = ds.Tables[0];

        GridViewServer.DataBind();
    }

3 个答案:

答案 0 :(得分:2)

您需要适当地设置GridView的数据源。如果未正确设置数据源,则不能只调用DataBind。基本上它相当于将GridView绑定为null(没有第2页)。我建议使用一个负责此过程的私有方法,无论何时需要绑定,都要调用它。

private void BindGridViewServer()
{
    GridViewServer.DataSource = GetYourData();  // This should get the data
    GridViewServer.DataBind();
}

使用以下内容从您的活动中调用此方法:

protected void GridViewServer_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridViewServer.PageIndex = e.NewPageIndex;
    BindGridViewServer();
}

通过将GridView作为参数传递,可以使其更具可扩展性,但您还必须有其他参数以确保该方法检索正确的数据。

答案 1 :(得分:0)

这是一个关于自定义GridView分页的非常好的教程(带有示例代码)。这使得分页控件看起来像你在许多搜索引擎,论坛等上看到的熟悉的分页控件。

http://geekswithblogs.net/aghausman/archive/2009/05/18/custom-paging-in-grid-view.aspx

答案 2 :(得分:0)

每次页面索引更改时,您必须向GridViewServer提供数据源。 所以代码就像这样

protected void GridViewServer_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridViewServer.PageIndex = e.NewPageIndex;
    GridViewServer.Datasource = MethodReturningDataTable();
    GridViewServer.DataBind();
}