0

私はasp.netのグリッドビューWebコントロールを使用しています。その中でページングコントロールを使用しています。その中でページングイベントを処理しましたが、2,3,4をクリックするとデータが表示されません...リンクでは表示されません1つの結果セット..例外は発生しませんが、最初のページ以外には何も表示されません。コードは次のとおりです。

public partial class Main : System.Web.UI.Page
{
protected string PostBackOption = "";

protected void Page_Load(object sender, EventArgs e)
{
    this.check.Text = " ";
    if (Page.IsPostBack)
    {
        PostBackOption = "$(\"#dialog\").dialog(\"open\");";
    }
}

List<Allemployees> result1 = new List<Allemployees>();
protected void Button1_Click(object sender, EventArgs e)
{ // Show all the employees currently in the table
    GridView1.DataSource = null;
    GridView1.DataBind();
    using (var db = new AdventureWorks2012_DataEntities())
    {

        List<Allemployees> result = new List<Allemployees>();
        var query = from b in db.Employees
                    join p in db.People on b.BusinessEntityID equals p.BusinessEntityID
                    orderby p.BusinessEntityID
                    select new
                    {
                        b.BusinessEntityID,
                        p.FirstName,
                        p.LastName
                    };

        foreach (var item in query)
        {
            Allemployees t1 = new Allemployees();
            t1.BusinessEntityId = item.BusinessEntityID;
            t1.FirstName = item.FirstName;
            t1.LastName = item.LastName;
            result1.Add(t1);
        }
     GridView1.DataSource = result1;
        GridView1.DataBind();
    } 
}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataSource = result1;
    GridView1.DataBind();
}
}
4

3 に答える 3

0

理由は、リンク ページのポストバックをクリックしたときでresult1あり、値がありません。ポストバック中にデータを保持したい場合は、ビューステート、セッションなどを使用する必要があります.

Button1_Click以下のように

protected void Button1_Click(object sender, EventArgs e)
{ 
    // your code 
    GridView1.DataBind(); // add below line after this line
    Session["Data"] = result1; 
}

GridView1_PageIndexChangingメソッドで

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    var result = (List<Allemployees>)Session["Data"];
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataSource = result;
    GridView1.DataBind();
}
于 2013-05-12T08:29:25.450 に答える
0

ページ変更機能の行 GridView1.DataSource=result1 を削除します。

于 2013-05-12T08:46:05.783 に答える
0

GridView1_PageIndexChanging を次のように変更します。

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView gridview = (GridView)sender;

    gridview.PageIndex = e.NewPageIndex;

    Button1_Click(null, null);

    gridview.DataBind();
}

GridView1 AllowPaging を true に設定してください。

結果を教えてください。

于 2013-05-12T08:49:33.237 に答える