#c# #asp.net #updatepanel #postback #imagebutton
#c# #asp.net #панель обновления #обратная отправка #кнопка imagebutton
Вопрос:
Я создаю веб-страницу с НЕСКОЛЬКИМИ, updatepanels
вложенными в ОДНОГО родителя updatepanel
. Я определил все триггеры, которые необходимы, чтобы позволить определенным элементам управления обновлять элементы управления, которые находятся в других updatepanels
, я установил для каждого updatepanel
‘s updatemode
значение conditional
и для свойства childrenastriggers
значение false
, и почти все работает соответствующим образом. Но я натыкаюсь на одно imagebutton_Click
событие: когда я нажимаю imagebutton
, оно вызывает событие, но не обновляет ни одного updatepanel
, хотя у меня есть несколько других imagebuttons
в том же самом updatepanel
, которые обновляют их updatepanels
просто отлично.
Теперь это может быть просто задачей imagebutton
, которая вызывает проблему:
imagebutton
Запускается таймерimagebutton
Добавляется предопределенная таблица с данными в другойupdatepanel
.imagebutton
Активирован объект timer
Возможные уже опробованные решения: — Я пытался установить causesvalidation
на false
(свойство imagebutton
) — Я пытался использовать myscriptmanager.registerASyncPostBack(imagebutton)
Код, стоящий за моей кнопкой (хотя на самом деле это не что-то необычное) :
protected void imbformulier_Click(Object sender, ImageClickEventArgs e)
{
imbFormulier.Visible = false;
imbGebruikers.Visible = false;
imbModellen.Visible = false;
pnlGegevens1.Visible = false;
pnlGegevens2.Visible = true;
pnlNavigatie.Visible = true;
pnlEvaluatie.Visible = true;
//kijken welk formulier moet ingevuld worden adhv de ddl's en dit meegeven aan de zelfgemaakte klasse
List<EvaluatieFormulier> mijnformulieren = (List<EvaluatieFormulier>)Session["mijnformulieren"];
IEnumerator<EvaluatieFormulier> enumerator = mijnformulieren.GetEnumerator();
EvaluatieFormulier meetegeven = new EvaluatieFormulier();
while (enumerator.MoveNext())
{
if (((enumerator.Current.GebruikergeevalueerdID == ddlGebruikers.SelectedValue) amp;amp; (enumerator.Current.ModelID == Convert.ToInt32(ddlModellen.SelectedValue))))
{
meetegeven = enumerator.Current;
//Eventueel tekst veranderen als er al was gewerkt aan een bepaalde evaluatie
if (meetegeven.Tijdaangewerkt == 0)
{
lblInfo.Text = "Evaluatie gestart van " ddlGebruikers.SelectedItem.Text;
lblDatum.Text = "Evaluatie begonnen op: " DateTime.Now.Date.ToString("d/M/yyyy") "(Vandaag)" ;
//updaten in database
Session["aantalminutenaangewerkt"] = 0;
Session["aantalsecondenaangewerkt"] = 0;
timTijdAanGewerkt.Enabled = true;
lblTijd.Visible = true;
}
else
{
lblInfo.Text = "Evaluatie verdergezet van " ddlGebruikers.SelectedItem.Text;
lblDatum.Text = "Evaluatie laatst gewijzigd : " meetegeven.Tijdingevuld.ToString();
Session["aantalminutenaangewerkt"] = meetegeven.Tijdaangewerkt;
Session["aantalsecondenaangewerkt"] = 0;
timTijdAanGewerkt.Enabled = true;
lblTijd.Visible = true;
}
}
}
Evaluatieform formulier = new Evaluatieform(meetegeven);
pnlEvaluatie.ContentTemplateContainer.Controls.Add(formulier.EvaluatiePanel);
Session["formulier"] = formulier;
if (formulier.evaluatiemodel.Domeins.Count > 4)
{
imbVorige.Visible = false;
imbvolgende.Visible = true;
}
else
{
imbVorige.Visible = false;
imbVorige.Visible = false;
imbvalideren.Visible = true;
}
}
Ответ №1:
Я заставил это работать, после рассмотрения каждого аспекта кажется, что мне просто нужно было разместить всю отдельную панель обновления на одной странице в одной большой родительской панели обновления (в которой, как я думал, она была, когда я опубликовал это «—, изменить updatemode на условный и определить мои триггеры.