2012-07-06 98 views
0

我试图通过在网页表单的教程走了,我尝试过滤的搜索结果是不工作很正确:过滤结果在ASP.NET Web窗体

的ASP页面样子的内容这样的:

<form id="form1" runat="server"> 

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:Button ID="button1" runat="server" onclick="button1_Click" Text="Submit" /> 
<asp:GridView ID="GridView1" AllowPaging="true" PageSize="8" AutoGenerateColumns="false" runat="server" 
OnPageIndexChanging="GridView1_PageIndexChanging"> 

    <Columns> 
     <asp:BoundField HeaderText="Qual ID" DataField="ID" /> 
     <asp:BoundField HeaderText="Client Name" DataField="Client_Name" /> 
     <asp:BoundField HeaderText="Project" DataField="Project_Name" /> 
     <asp:BoundField HeaderText="Uploaded By" DataField="Uploaded_By" /> 
    </Columns> 

</asp:GridView> 
</form> 

而且隐藏文件中的代码:

public partial class Sample1 : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 

    SourceDataContext db = new SourceDataContext(); 

    GridView1.DataSource = from q in db.Cust 
          orderby q.ID 
          select q; 
    GridView1.DataBind(); 
} 

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 

    GridView1.DataBind(); 
} 
protected void button1_Click(object sender, EventArgs e) 
{ 
    string client = TextBox1.Text; 

    SourceDataContext db = new SourceDataContext(); 

    GridView1.DataSource = from q in db.Cust 
          where q.Client_Name == client 
          orderby q.ID 
          select q; 
    GridView1.DataBind(); 

} 
} 

过滤作品,虽然它的寻呼停止工作。任何建议感激。

谢谢。

+0

“分页停止工作”你在分页得到任何错误,PLZ阐述更 – yogi 2012-07-06 11:10:35

回答

2

在我看来,有在!IsPostBack

  • GridView1_PageIndexChangingPage_Load围约束力不要再结合
  • 通过Chris Gessler
  • 代码

    看到抓两个问题

    1. public partial class Sample1 : System.Web.UI.Page 
      { 
      protected void Page_Load(object sender, EventArgs e) 
      { 
          if(!IsPostBack) 
          { 
      
          SourceDataContext db = new SourceDataContext(); 
      
          GridView1.DataSource = from q in db.Cust 
                orderby q.ID 
                select q; 
          GridView1.DataBind(); 
          } 
      } 
      
      protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
      { 
          GridView1.PageIndex = e.NewPageIndex; 
      
      
      } 
      protected void button1_Click(object sender, EventArgs e) 
      { 
          string client = TextBox1.Text; 
      
          SourceDataContext db = new SourceDataContext(); 
      
          GridView1.DataSource = from q in db.Cust 
                where q.Client_Name == client 
                orderby q.ID 
                select q; 
          GridView1.DataBind(); 
          GridView1.PageIndex = 0; 
      
      } 
      } 
      
    1

    问题1:这应该只在GET请求上运行。 ViewState将接管PostBacks并填充网格。

    protected void Page_Load(object sender, EventArgs e) 
    { 
        if(!this.Page.IsPostback) 
        { 
         SourceDataContext db = new SourceDataContext(); 
    
         GridView1.DataSource = from q in db.Cust 
               orderby q.ID 
               select q; 
         GridView1.DataBind(); 
        } 
    } 
    

    问题2:您需要重置页索引,因为记录集更改。当前页面可能不存在。

    protected void button1_Click(object sender, EventArgs e)  
    {  
        string client = TextBox1.Text;  
    
        SourceDataContext db = new SourceDataContext();  
    
        GridView1.DataSource = from q in db.Cust  
              where q.Client_Name == client  
              orderby q.ID  
              select q;  
        GridView1.DataBind();  
    
        GridView1.PageIndex = 0; 
    
    } 
    

    问题3:您正在调用DataBind(),但未设置新的数据源。

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)    
    {    
        GridView1.PageIndex = e.NewPageIndex;       
    } 
    

    此外,

    考虑缓存记录和过滤,与其向服务器喊出了一个新的记录,但是,这取决于“需求”。缓存记录集显然不会找到任何新记录,这可能不符合您的业务需求。

    考虑设置在你的代码中的事件OnInit方法背后:

    protected void Page_Init(object sender, EventArgs e) 
    { 
        this.GridView1.PageIndexChanging += GridView1_PageIndexChanging; 
    } 
    
    +0

    尼斯。我错过了第三点。 +1 – Rab 2012-07-06 11:27:03

    +0

    使用'IsPostBack',分页停止工作。 – stats101 2012-07-06 14:31:07

    +0

    然后您可能关闭ViewState。 – 2012-07-06 15:24:28