2012-05-01 5 views
1

グリッドビューがあり、最初のページにバインドします。検索ボタンがクリックされたときに同じページに検索オプションがあります。私は検索結果から来て新しいデータソースでgridviewを再バインドし、問題はグリッドビューを再バインドした後私は最初のpageloadデータバインディングでそれらを持っていないページングの問題があります!誰が私になぜそれが言えるだろうか?asp.net gridviewページングの問題を検索結果のために再バインドする場合

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クラスで私はbefor使用このクエリウィッヒを持っている。ここ

は私のPage_Load COEです:

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; 
} 

私のページの読み込みでは、グリッドビューの変更に問題はありません。 検索ボタン「btnSearch」をクリックしてからグリッドビューを再バインドした後、グリッドビューがpagenumbersを持っていて、私がこれらのページ番号の1つをクリックすると、前のpage_Loadから間違った結果が得られます!

+0

ソースコード、スクリーンショット、最も重要なのは何が問題の正確な性質か、予想通りに動作しないものを追加する必要があります。 – Constantin

+0

@コンスタンチン - 私は私の質問を編集し、より多くを説明しました、私はあなたが今私を助けることを願っています! – Karamafrooz

答えて

1

ページングのポストバックには、ページングするビューステートの情報が含まれていないようです。ポストバックに含めるか、ユーザーセッションに格納できるように、その情報をページにプッシュする必要があります(ラウンドトリップが少ない、サーバーの重量が増えますが、クエリー結果も格納している場合はより速い応答)。 ..

+0

あなたの答えをありがとう、いくつかのコードで私を助けてくれますか?何をすべきかの例は? – Karamafrooz

+0

Pleaseeeeeeeeeeeeeee、いくつかのコードで私を助けてくれますか、私はこのウェブサイトを公開しようとしていますが、それでも何をするべきか分かりません。 – Karamafrooz

+0

私は、より規範的なガイダンスとコードを与えるために、 ;検索条件をviewstateにプッシュして、ページングイベントハンドラを実行するときにその存在を確認するのと同じくらい簡単なことをお勧めします。存在し、空でない場合は、データの正しいビューにバインドすることを確認してください。これはあなたのページを少し再構成する必要があります。私はクライアントコードを自分で支払うように書かなければなりません.... –

関連する問題