2012-07-06 96 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