トップ回答者
GridViewのページングについて

質問
-
お世話になっております。
現在、ASP.NET 2.0 で開発をしております。
GridViewのページングに関することなのですが、Default.aspxに、
サーバーエクスプローラーより、testTableをドラッグアンドドロップで配置しております。
配置されたGridView1の、[ページングを有効にする]にチェックを入れ、PageSizeは10にしてあります。やりたいこととしましては、
Default.aspxにprintButtonを用意して、クリックすると、print.aspxという印刷ページを表示します。print.aspxにはDefault.aspxと同様にtestTableをドラッグアンドドロップで配置しております。
このときに、Default.aspxのGridView1が2ページを表示している状態でprintButtonをクリックしたら、Default.aspxで2ページに表示されているレコードをprint.aspxで表示するようにしたいと思っています。
ご教授していただけると幸いです。
宜しくお願いします。環境:C#、WindowsXP
回答
-
print.aspxでもGridViewで表示しているのであれば、Default.aspxにあるGridView1.PageIndexをprint.aspxにGETで渡し、print.aspxにあるGridViewのPageIndexプロパティにその値をセットしてしまうのが簡単です。
GETで渡すには、ボタンをクリックした際にResponse.Redirectを使い、例えば2ページですと
print.aspx?pi=2
という形でprint.aspxへ遷移させます。
print.aspxでは、Request.QueryStringを使ってpiの値を取り出すことができます。
すべての返信
-
print.aspxでもGridViewで表示しているのであれば、Default.aspxにあるGridView1.PageIndexをprint.aspxにGETで渡し、print.aspxにあるGridViewのPageIndexプロパティにその値をセットしてしまうのが簡単です。
GETで渡すには、ボタンをクリックした際にResponse.Redirectを使い、例えば2ページですと
print.aspx?pi=2
という形でprint.aspxへ遷移させます。
print.aspxでは、Request.QueryStringを使ってpiの値を取り出すことができます。
-
お教えいただいたおかげで、piの値を取得することができました。
参考にして下記のコードを書きました。
Default.aspxのコード
protected void printButton_Click(object sender, EventArgs e)
{
Session["page"] = GridView1.PageIndex;
Response.Redirect("print.aspx?pi=" + Session["page"] + "");
}print.aspxのコード
protected void Page_Load(object sender, EventArgs e)
{
int page;
page = Convert.ToInt32(Request.QueryString["pi"]);
GridView1.PageIndex = page;}
trapemiya様、ありがとうございました。