中继器分页视图状态
本文关键字:视图状态 分页 中继器 | 更新日期: 2023-09-27 17:50:45
最后…我有我的中继器工作,因为我希望它是充满按钮,单选按钮,图像按钮,更新面板,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();
}
如果你使用的是。net 4.0,你可以使用EnablePersistedSelection="True"
很抱歉,这是不可能的。当您在第一页时,其他页面在中继器中并不实际存在。
分页到下一页后,下一个数据将被加载,因此之前的数据将被重置
我的意思是说,当你要求选择所有的单选,按钮,复选框意味着你所看到的。更改页面后,其他控件被设置为默认值(可能未选中或重置)
所以重新设计你想要做的用户界面。正如我的建议,采取另一个按钮来保存页面的当前状态。然后转到下一页…
还有什么我可以帮忙的吗?