我正在尝试用亚马逊搜索结果填充我的 gridview。在页面加载的那一刻,数据源被数据填充。我想要做的是在按下搜索按钮后显示数据,但它显示“未找到记录”。我尝试了许多不同的方法,唯一有效的方法是没有回发,但问题是每次我在 gridview 上更改页面时,都会重新启动 GetProducts("Playstation") 命令。
我一直在寻找的解决方案:加载页面->单击按钮->用数据填充gridview->在gridview中选择新页面时,会显示数据,但不会再次启动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();;
}