【问题标题】:repeater paging viewstate转发器分页视图状态
【发布时间】:2013-01-06 07:00:21
【问题描述】:

所以最后.. 我的中继器按照我的要求工作,我希望它充满按钮、单选按钮、图像按钮、更新面板、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();

    }

【问题讨论】:

  • 如果您希望任何人能够帮助您,您将需要包含一些代码示例。
  • 添加了分页码。正如我所说,分页工作正常。

标签: c# repeater


【解决方案1】:

如果您使用的是 .net 4.0,则可以使用 EnablePersistedSelection="True"

很抱歉,但这不能做.. 当您在第一页时,其余页面实际上并不存在于转发器中。

分页到下一页后,将加载下一个数据,因此将重置以前的数据

我的意思是说,当您要求选择所有收音机时,按钮、复选框就是您所看到的。更改页面后,其他控件设置为默认值(可能未选中或重置)

因此,请根据您的需要重新设计您的用户界面。根据我的建议,使用另一个按钮来保存页面的当前状态..然后转到下一页..

还有什么我可以帮忙的吗??

【讨论】:

  • 保存每个页面将没有用,用户应该能够返回到上一页并查看/编辑更改。还有其他方法吗?
  • 我将尝试将我的转发器转换为列表视图并为其命名,但希望代码没有太大变化。
  • 是的..这样做不需要太多努力..如果你发现它有用,请标记为答案.. :)
  • 它没有用。我认为唯一的解决方案是在分页期间存储值。啊啊啊啊,好多代码啊……
猜你喜欢
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 2015-11-07
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多