グリッドビューに Amazon 検索結果を入力しようとしています。ページがロードされる瞬間、データソースはデータで満たされます。私がやろうとしているのは、検索ボタンを押した後にデータを表示することですが、「レコードが見つかりません」と表示されます。私はさまざまな方法を試しましたが、唯一の方法はポストバックなしでしたが、グリッドビューでページを変更するたびに GetProducts("Playstation") コマンドが再度開始されるという問題がありました。
私が探していた解決策: ページをロード -> ボタンをクリック -> グリッドビューにデータを入力 -> グリッドビューで新しいページを選択すると、データは表示されますが、Getproducts("Playstation") は再度開始されません。
これを行う方法はありますか?
protected void Page_Load(object sender, EventArgs e) {
Button1.Click += new EventHandler(this.GreetingBtn_Click);
if (!Page.IsPostBack) {
AmazonSearch us = new Amazon.PAAPI.AmazonSearch();
GridView1.DataSource = us.GetProducts("Playstation");
}
}
void Search(Object sender, EventArgs e) {
Button clickedButton = (Button) sender;
GridView1.DataBind();
}
protected void grid_PageIndexChanging(object sender, GridViewPageEventArgs e) {
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
編集
FastGeeks anwser のおかげで理解できました。コードに変数 ds を追加しました。次の変更を加えました。
DataSet ds = new DataSet();
protected void Page_Load(object sender, EventArgs e) {
Button1.Click += new EventHandler(this.GreetingBtn_Click);
}
void Search(Object sender, EventArgs e) {
Button clickedButton = (Button) sender;
AmazonSearch us = new Amazon.PAAPI.AmazonSearch();
ds.Tables.Add(us.GetProducts("Playstation"));
GridView1.DataSource = ds;
Session["ds"] = ds;
GridView1.DataBind();
}
protected void grid_PageIndexChanging(object sender, GridViewPageEventArgs e) {
GridView1.PageIndex = e.NewPageIndex;
ds = (DataSet)Session["ds"];
GridView1.DataSource = ds;
GridView1.DataBind();;
}