2010-07-22 60 views
1

我有一個web應用程序,每當我上傳一個Excel文件時,其內容都出現在GridView中,該數據表綁定在一個DataTable上。 使用這些屬性,我將分頁和排序設置爲true。在Gridview中尋呼,無法訪問另一個頁面

當我使用fileupload和提交按鈕輸入文件時,Web應用程序的底部會出現頁碼。 它也正確排序它(我的頁面大小設置爲10),但是,當我點擊下一頁(例如第2頁)時,沒有任何顯示,直到我上傳另一個文件並再次提交。

這是我建表代碼:

protected void AddResultToGrid(String url, String result) 
{ 
    data = (DataTable)Session["URLSessionData"]; 
    DataRow dr = data.NewRow(); 
    dr[0] = url; 
    dr[1] = result; 
    data.Rows.Add(dr); 

    gdvResults.DataSource = data; 
    gdvResults.DataBind(); 
    Session["URLSessionData"] = data; 
} 

這是頁面加載:

protected void Page_Load(object sender, EventArgs e) 
{ 
    lblFiup.Text = ""; 

    data.Columns.Add("URL", typeof(String)); 
    data.Columns.Add("Status", typeof(String)); 
    gdvResults.DataSource = data; 
    gdvResults.DataBind(); 

    gdvResults.AllowPaging = true; 
    gdvResults.AllowSorting = true; 
    if (!Page.IsPostBack) 
    { 

    Session["URLSessionData"] = data; 
    } 
} 

我認爲它可能有一些做的網頁索引...但我不確定。 這裏是我的頁面索引的改變方法:提前

protected void gdvResults_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 

     e.NewPageIndex = e.NewPageIndex + 1; 
     DataBind(); 

    } 

感謝您的幫助(:


public partial class _Event : System.Web.UI.Page 
    { 
     public HttpWebRequest req; 
     public HttpWebResponse resp; 
     public String link; 
     public String line; 
     public String stat; 
     public String result; 
     public DataTable data = new DataTable(); 
     public DataTable clrdata = new DataTable(); 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      lblFiup.Text = ""; 
      if (!Page.IsPostBack) 
      {     
       data.Columns.Add("URL", typeof(String)); 
       data.Columns.Add("Status", typeof(String)); 
       AddResultToGrid("", ""); // this is the only way i know how to do this, as of now... 
       data.Rows[0].Delete(); 

       Session["URLSessionData"] = data; 
       BindGridView(); 

      } 
     } 

     private void BindGridView() 
     { 
      gdvResults.DataSource = data; 
      gdvResults.DataBind(); 
     } 

     protected void AddResultToGrid(String url, String result) 
     { 
      data = (DataTable)Session["URLSessionData"]; 
      DataRow dr = data.NewRow(); 
      dr[0] = url; 
      dr[1] = result; 
      data.Rows.Add(dr); 

      gdvResults.DataSource = data; 
      gdvResults.AllowPaging = true; 
      gdvResults.DataBind(); 
      Session["URLSessionData"] = data; 
     } 

回答

2

好吧,我做了一個模擬數據表我的程序像你描述的情況跟。第二頁總是空白的,我把DataTable設置爲靜態並且工作,這是我的最終代碼:

namespace EorManager 
{ 
public partial class _Default : System.Web.UI.Page 
{ 
    //Must be static 
    static DataTable data = new DataTable(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     //On FIRST page load I call my BindGridview method. 
     //Afterward I only call my BindGridview method from events 
     if (!IsPostBack) 
     { 
      //make a column 
      DataColumn myDataColumn = new DataColumn(); 
      myDataColumn.DataType = Type.GetType("System.String"); 
      myDataColumn.ColumnName = "url"; 
      data.Columns.Add(myDataColumn); 

      //add rows 
      DataRow row; 
      row = data.NewRow(); 
      row["url"] = "www.google.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.facebook.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.stackoverflow.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.google.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.facebook.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.stackoverflow.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.google.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.facebook.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.stackoverflow.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.google.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.facebook.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.stackoverflow.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.google.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.facebook.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.stackoverflow.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.google.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.facebook.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.stackoverflow.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.google.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.facebook.com"; 
      data.Rows.Add(row); 
      row = data.NewRow(); 
      row["url"] = "www.stackoverflow.com"; 
      data.Rows.Add(row); 


      BindGridview(); 
     } 
    } 


    private void BindGridview() 
    { 

     grdEOR.DataSource = data; 
     grdEOR.DataBind(); 

    } 

    protected void grdEor_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     grdEOR.PageIndex = e.NewPageIndex; 
     BindGridview(); 

    } 
} 
} 

這是我的GridView代碼:

<asp:GridView ID="grdEOR" runat="server" BackColor="White" 
      BorderColor="#999999" OnPageIndexChanging="grdEor_PageIndexChanging" 
      BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black" GridLines="Vertical" 
      AllowPaging="True" 
      PageSize="15" 
              > 
      <PagerSettings Mode="NumericFirstLast" /> 
      <FooterStyle BackColor="#CCCCCC" /> 
      <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> 
      <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" /> 
      <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" /> 
         <EditRowStyle BackColor="#2D41F7" /> 
      <AlternatingRowStyle BackColor="#CCCCCC" BorderColor="Black" 
       BorderStyle="Solid" BorderWidth="5px" /> 
     </asp:GridView>