UpdatePanel с PostBackTrigger не обновляет Label за ее пределами и продолжает работу после обратных передач
У меня есть панель обновления с postbacktriggers
и метка, которую я планирую обновить, находится на панели навигации, которая не включена в панель обновления, на которой расположены триггеры. Ниже приведена структура этого кода:
<asp:Label ID="totalScorecardsLabel" runat="server"></asp:Label>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:PostBackTrigger ControlID="btnGenerateScorecard" />
<asp:PostBackTrigger ControlID="exportPDFbtn" />
<asp:PostBackTrigger ControlID="generateNewBtn" />
</Triggers>
<ContentTemplate>
divs.. etc
</ContentTemplate>
</UpdatePanel>
С другой стороны, у меня есть событие щелчка для exportPDFbtn
это добавляет записи в список, увеличивая размер списка.
int totalScorecards = loadTest1.Count + loadTest2.Count + loadTest3.Count + loadTest4.Count;
totalScorecardsLabel.Text = totalScorecards.ToString();
totalScorecards
Метка находится за пределами панели обновления. Я установил это 0
на Page_Load if (!IsPostBack)
,
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
init();//initialize all lists etc
int totalScorecards = 0;
totalScorecardsLabel.Text = totalScorecards.ToString();
}
}
После нажатия exportPDFbtn
Я ожидаю постепенного изменения метки. После этого я планирую нажать generateNewScorecardbtn
и ожидаем, что общее количество карт будет иметь обратную передачу.
Но проблема в том, что ярлык все еще включен 0
хотя элементы успешно добавляются в списки в exportPDF
clickEvent (использовал точки останова, чтобы узнать, действительно ли он добавляет в списки). Я также использую Server.Transfer("Scorecards.aspx")
для generateNewScorecardbtn
,
Любая помощь будет оценена. Спасибо!
2 ответа
Поместите его в другую панель обновлений и используйте метод Update()
https://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.update(v=vs.110).aspx
Это не будет работать, если его за пределами панели. Вам нужно поместить ярлык в отдельную панель обновлений, и тогда она будет работать.