刷新页面时Gridview消失

时间:2009-09-15 14:24:57

标签: asp.net gridview

我有一个从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();
    }

2 个答案:

答案 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之前。

它完美无缺。