我有一个从sql数据库填充的gridview。 显示结果时,我将区#连接到每个区的新联系页面。防爆。 d1.aspx,d2.aspx,d3.aspx等。在每个页面上都有一个返回原始页面的链接。发生这种情况时,原始页面将被刷新,之前的gridview结果将消失。有可能阻止这种情况发生,还是有更好的方法来做这样的事情?
<Columns>
<asp:BoundField HeaderText="Name" DataField="school" /><asp:BoundField />
<asp:TemplateField HeaderText="District" HeaderStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("district", "cdms/d{0}.aspx") %>' Text='<%# Eval("district") %>'>
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<span style="color: rgb(255, 0, 0);">No records found!</span>
</EmptyDataTemplate>
</asp:GridView>
代码隐藏:
protected void btnSubmit_Click(object sender, EventArgs e)
{
BuildGridView1();
GridView1.DataBind();
GridView1.Visible = true;
}
private void BuildGridView1()
{
GridView1.DataSource = new Select(District.Schema.TableName + ".*")
.From(District.Schema)
.Where(District.Columns.Zip).IsEqualTo(this.txtZip.Text)
.OrderAsc(District.Columns.Zip)
.ExecuteDataSet();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
BuildGridView1();
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
答案 0 :(得分:0)
处理这种情况的方法有很多种。可能的解决方案是将用户的查询结果存储在会话变量中。在页面加载时,检查查询结果是否存在。如果是,则从会话变量填充GridView。如果没有,请在数据库中找到结果并将结果添加到会话变量中。
我没有测试过,但是这样的事情应该有效。 :
private void BuildGridView1()
{
DataSet ds;
if (Session["myDataset"] == null)
{
ds = new Select(District.Schema.TableName + ".*")
.From(District.Schema)
.Where(District.Columns.Zip).IsEqualTo(this.txtZip.Text)
.OrderAsc(District.Columns.Zip)
.ExecuteDataSet();
Session["myDataset"] = ds;
}
else
{
ds = (DataSet)Session["myDataSet"];
}
GridView1.DataSource = ds;
}
答案 1 :(得分:0)
private void BindGridViewServer()
{
DataSet ds =GetData();
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindGridViewServer();
}
确保EnableSortingAndPagingCallbacks =&#34; False&#34;在添加PageIndexChanging Event之前。
它完美无缺。