Вопрос о PostBack - PullRequest
       10

Вопрос о PostBack

0 голосов
/ 20 июня 2011

Пример выглядит немного длиннее.Но необходимо понять мой вопрос.

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 и событиях кнопок идентичны !!!!

1 Ответ

1 голос
/ 20 июня 2011

Не забывайте, что вы должны заново создать все динамические элементы управления при обратной передаче

Ваш Page является просто запоминаемым классом, и он создается один раз для каждого запроса, если он не воссоздает эти элементы управления, а также связанные обработчики в запросе обратной передачи, то ничего не произойдет. *

Вам необходимо воссоздать эти элементы управления до Page_Load, вы можете сделать это в Page_Init или переопределить метод CreateChildControls.

...