- PR -

【質問】ASP.NETのDataGridのページング

1
投稿者投稿内容
にし
会議室デビュー日: 2002/06/18
投稿数: 18
お住まい・勤務地: 東京都
投稿日時: 2002-07-03 14:00
検索条件を入力し、オリジナル作成のWebサービスに検索条件を渡し、返ってきたDataSetをDataGridにバインドして表示するプログラムを作成しました。
DataGridのページングの処理で困っています。

【ソース】
DataSet dsspRireki = new DataSet();
private void Page_Load(object sender, System.EventArgs e)
{
  clalis.clalis wsClalis = new clalis.clalis();  // オリジナルWebサービス
  if (Page.IsPostBack)
  {
    Page.Validate();
    if (Page.IsValid)
    {
      dsspRireki = wsClalis.GetspRireki(txtSpID.Text);
      dgrdSpRireki.DataSource = dsspRireki;
      dgrdSpRireki.DataMember = "spRireki";
      //dgrdSpRireki.CurrentPageIndex = 0;
      dgrdSpRireki.DataBind();
    }
  }
}

private void dgrdSpRireki_PageIndexChanged(object source,
System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
  dgrdSpRireki.CurrentPageIndex = e.NewPageIndex;
  dgrdSpRireki.DataBind();
}

【前提条件】
・検索条件A:DataGridに20ページ分のデータがある
・検索条件B:DataGridに5ページ分のデータがある
・DataGridのページングコントロールのスタイルは「ページ番号」
・ページ数は10

【現象】
1.上記ソースで下記を実行
  1-1.Aの検索を行う
  1-2.10ページに遷移
  1-3.Bの検索を行う
  1-4.エラー
    「CurrentPageIndex 値が無効です。 値は 0 以上で PageCount より
     小さくなければなりません。」

2.1-4のエラーを回避する為に、Page_LoadイベントでCurrentPageIndexを初期化する
  「//dgrdSpRireki.CurrentPageIndex = 0;」のコメントを外し下記を実行
  2-1.Aの検索を行う
  2-2.10の隣の「...」をクリック
  2-3.11ページ目が表示される    … 正常
  2-4.「...」「11」の次の「12」をクリック(左から3番目のリンク)
  2-5.3ページ目が表示される    … 意図する結果ではない

現象1と2を解決する方法がわかりません。
うまく説明が出来ていないかも知れませんが、良い方法をご教授いただければ幸いです。
prog@
会議室デビュー日: 2002/07/03
投稿数: 1
投稿日時: 2002-07-03 17:00
ちばです。

ページ切り替え時にまた新たにページインデックスを設定する。

public void Grid_Change(object sender, DataGridPageChangedEventArgs e)
{
// ページインデックスを設定
Grid.CurrentPageIndex = e.NewPageIndex;
}
1

スキルアップ/キャリアアップ(JOB@IT)