关于PostBack的问题
本文关键字:问题 PostBack 关于 | 更新日期: 2023-09-27 17:59:45
这个例子看起来有点长。但有必要理解我的问题。
if (IsPostBack)
{
for (int j = 0; j < PostsDic.Count; j++)//The number is 2. 2 buttons to be created.
{
Button pgs2 = new Button();//Create New Topic
pgs2.Width = 20;
pgs2.Command += obtainTopicsPerPage_Click;
pgs2.EnableViewState = false;
pgs2.CommandName = j.ToString();
pgs2.Text = j.ToString();
buttons.Add(pgs2);
}
if (!FirstList)
{
ListFirstPage();//Creates a few tables and makes it look like a thread table in a forum
FirstList = true;
}
}
附加信息:
FirstLoad只是一个道具:
public bool FirstList { get { return ViewState["first"] == null ? false : (bool)ViewState["first"]; } set { ViewState["first"] = value; } }
ListFirstPage()方法如下:
void ListFirstPage()
{
//Dictionary<int, List<AllQuestionsPresented>>
foreach (var item in PostsDic)
{
foreach (var apply in PostsDic[item.Key])
{
DisplayAllQuestionsTable objectToList = new DisplayAllQuestionsTable(this, apply.Name, apply.ThreadName, apply.Topic, apply.Subtopic, apply.Views, apply.Replies, apply.PageNumber, apply.Time, PlaceHolder2);
objectToList.ExecuteAll();
}
}
按钮事件如下所示:
enter code here void obtainTopicsPerPage_Click(Object sender, CommandEventArgs e)
{
//Dictionary<int, List<AllQuestionsPresented>>
foreach (var item in PostsDic)
{
if (item.Key.ToString() == e.CommandName)
{
int ds=0;
foreach (var apply in PostsDic[item.Key])
{
DisplayAllQuestionsTable objectToList = new DisplayAllQuestionsTable(this, apply.Name, apply.ThreadName, apply.Topic, apply.Subtopic, apply.Views, apply.Replies, apply.PageNumber, apply.Time, PlaceHolder2);
objectToList.ExecuteAll();
}
}
}
结果是。。当我点击表单上的一个按钮时,会触发ListFirstPage(),这会导致列出一个表列表和一个页面栏(2个按钮上有数字,即1、2)。当我按下按钮2时,我希望按钮事件内部的迭代发生/但没有发生任何事情——表单变为空白,也没有生成任何内容。为什么?请注意,ListFirstPage和buttons事件中的算法是相同的!!!!
别忘了必须在回发上重新创建所有动态控件
您的Page
只是一个类记住,它在每个请求中实例化一次,如果它不在回发请求上重新创建这些控件以及关联的处理程序,那么您就不会得到任何结果。。
您需要在Page_Load
之前重新创建这些控件,您可以在Page_Init
中执行此操作或覆盖CreateChildControls
方法。