2013-01-06 35 views
0

因此最后..我有我的中继器工作,因为我希望它充满按钮,单选按钮,图像按钮,更新面板,AJAX模式弹出窗口和每个事件背后的沉重代码。中继器分页视图状态

发现我的中继器在项目超过20时变得非常慢,所以我使用分页作为解决方案。问题在于,当我进行更改并转到下一页时,回到上一页时,所有更改都消失了。 (检查收音机,标签等全部恢复到正常状态)。

请帮忙,我的系统现在正在生产中。


protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      loadTasks(); 
     } 

 void loadTasks() 
    { 

     string evalidxxx = Request.QueryString["eval_id"].Trim().Replace(" ", ""); 


     SqlConnection conn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["GappConnectionString2"].ConnectionString); 

     try 
     { 
      conn.Open(); 

      SqlDataAdapter sqlAdapter = new SqlDataAdapter("SELECT Prog_Task_link.pt_seq, Tasks.task_name, Tasks.task_id FROM Tasks INNER JOIN Prog_Task_link ON Tasks.task_id = Prog_Task_link.task_id INNER JOIN Programs ON Prog_Task_link.prog_id = programs.prog_id INNER JOIN Data_Tracker_prepare ON Programs.prog_id = Data_Tracker_prepare.dtpre_prog_id WHERE Data_Tracker_prepare.eval_id =" + evalidxxx, conn); 
      System.Data.DataTable dt = new System.Data.DataTable(); 

      sqlAdapter.Fill(dt); 




      PagedDataSource objPds = new PagedDataSource(); 
      objPds.DataSource = dt.DefaultView; 
      objPds.AllowPaging = true; 
      objPds.PageSize = 10; 

      objPds.CurrentPageIndex = CurrentPage; 

      lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of " 
       + objPds.PageCount.ToString(); 

      //Disable Prev or Next buttons if necessary 
      LinkPrevPage.Enabled = !objPds.IsFirstPage; 
      LinkNextPage.Enabled = !objPds.IsLastPage; 

      rptr1.DataSource = objPds; 
      rptr1.DataBind(); 
     } 
     catch (SqlException ex) 
     { 
      Response.Write(ex.Message); 
     } 
     finally { conn.Close(); } 

    } 



    public int CurrentPage 
    { 
     get 
     { 
      // look for current page in ViewState 
      object o = this.ViewState["_CurrentPage"]; 
      if (o == null) 
       return 0;  // default to showing the first page 
      else 
       return (int)o; 
     } 

     set 
     { 
      this.ViewState["_CurrentPage"] = value; 
     } 
    } 

    protected void LinkPrevPage_Click(object sender, EventArgs e) 
    { 
     CurrentPage -= 1; 
     loadTasks(); 

    } 

    protected void LinkNextPage_Click(object sender, EventArgs e) 
    { 
     CurrentPage += 1; 
     loadTasks(); 

    } 
+0

如果您希望有人能够帮助您,您将需要包含一些代码示例。 –

+0

添加了分页代码。正如我所说,分页工作正常。 –

回答

0

,如果你使用的是.NET 4.0中,您可以使用EnablePersistedSelection = “真”

抱歉地说,但这不能做.. 当你在第一页中,其余页面并不存在于中继器中。

后分页到下一页下数据将是负载,以前的数据将会被重置

我的意思是说,当你问到选择所有电台,按钮,复选框都意味着你所看到的。更改页面后,其他控件设置为默认(可能未选中或重置)

因此,重新设计您的用户界面,以实现您想要执行的操作。并作为我的建议采取另一个按钮来保存页面的当前状态..然后转到下一页..

其他任何东西,我可以帮忙?

+0

保存每个页面将不会有用,用户应该能够返回到上一页并查看/编辑更改。有没有其他方法? –

+0

我认为你可以使用隐藏字段来保存选择.. –

+0

看到我编辑的答案! :) –