Динамическое событие не вызывается asp.net - PullRequest
0 голосов
/ 19 июля 2011

Я думаю, что прочитал почти все в Интернете по этому поводу, и я все еще не могу понять динамические события. Я делаю онлайн-планировщик, где вы можете проверить свой график работы в Интернете. У меня есть это, так что вы можете опубликовать свою смену для других, чтобы забрать. Каждый день, когда вы работаете, получает кнопку после смены. Когда вы нажимаете на нее, ваша смена публикуется в базе данных, страница перезагружается, и кнопка после смены превращается в кнопку сдвига. Проблема в том, что если вы публикуете свою смену, то при следующей загрузке страницы вытащить свою смену событие вызывной смены не будет вызвано. Но если вы перезагрузите страницу и нажмете на нее, она работает просто отлично. Вот некоторые из основных кодов.

protected void Page_Load(object sender, EventArgs e)
{
    setView();  
}

private void assignEvents()
{
   for (int i = 0; i < 7; i++)
   {
        foreach (ScheduleItem item in scheduleControls[i])
        {
            if (item.shiftPosted)
            {
                item.button.Click += (sender, e) => btnPullShift_Click(sender,e, item);
            }
        }
    }
}


private void setView()
{
    //make a call to the database to get your schedule

    //loop through your schedule and display each day
    //if the shift is posted then the button should pull shift else it should post the shift.
    //(loop)
    if (tempResult.isPosted)
    {
        tempButton.Text = "Pull Shift";
        tempItem.shiftPosted = true;
        tempButton.ID = "Button" + scheduleID;
        tempButton.AutoPostBack = true;
    }
    else
    {
        tempButton.ID = "Button" + scheduleID;
        tempItem.shiftPosted = false;
        tempButton.Text = "Post Shift";
        //posting does a client side event that shows another panel where you enter details about posting there is another button you click to actually posts the shift.
     }

     tempItem.button = tempButton;
     scheduleControls[i].Add(tempItem);
    //(end loop)
    assignEvents();
}

void btnPullShift_Click(object sender, EventArgs e, ScheduleItem item)
{
    //edits the database to pull the shift
    setView();
}

void btnPostShift_Click(object sender, EventArgs e, ScheduleItem item)
{
    //edits the database to post the shift
    setView();
}

Кнопки каждый раз получают один и тот же идентификатор. Поэтому, когда вы загружаете страницу, она создает кнопки и устанавливает события, вы нажимаете кнопку «Опубликовать», страница перезагружается, создаются точно такие же кнопки и вызывается событие btnPostShift_Click, база данных обновляется, затем снова вызывается setView (), так что пользователь может видеть, что сдвиг был опубликован, а также обновлять события, а затем, когда он нажимает «сдвиг», страница перезагружается, и кнопка создается заново с тем же идентификатором, но событие никогда не вызывается. Есть идеи? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...