Хорошо, вот моя проблема:
У меня есть форма, которая требует наличия двух идентичных наборов полей, которые собирают разные наборы данных. Они содержатся в UpdatePanel. Пользователь вводит данные в форму, и когда они нажимают кнопку «Добавить»
Кнопка, эта строка вставляется в DataTable. Пользователь должен иметь возможность вводить столько строк, сколько пожелает.
Поскольку они почти идентичны, сначала я получил один работающий правильно, а затем использовал его в качестве основы для второго.
Проблема в том, что теперь у них кнопка «Добавить» срабатывает только один раз. Когда я пытаюсь ударить его снова, ничего не происходит. Обратная передача не происходит.
Я провел некоторые исследования, и они посоветовали зарегистрировать кнопки в диспетчере скриптов.
Не срабатывает событие нажатия кнопки ASP.Net
Это не решило проблему.
Есть идеи, что еще я могу попробовать?
Редактировать 3:
Решение:
Проблема заключалась в том, что asp: RegularExpressionValidator с EnabledClientScript = "true". Кажется, что javascript элемента управления для проверки сталкивается и нарушает JavaScript asp: Button при визуализации элемента управления. Если я отключил ClientScript, то кнопки работают.
Предложение заглянуть в жизненный цикл привело меня к правильному ответу. Проблема заключалась в том, что за кодом не было никакого жизненного цикла. Поэтому после изучения того, что отображает кнопки, это означало, что это должна быть проблема, связанная с javascript.
Редактировать 2:
Я отключил asp: Validation, и он работает. Любое понимание этого?
Редактировать 1:
Вот код, соответствующий теме
кнопка разметки:
<td >
<asp:Button ID="btnPrNew" Text="Add" OnClick="btnPrNew_Click" runat="server" />
</td>
И это функция, которая обработала событие onclick
protected void btnPrNew_Click(object sender, EventArgs e)
{
if (prQuantityValidator.IsValid && prPriceValidator.IsValid)
{
permanentRepairs = newItemizedDT();
permanentRepairsTotal = populateDT(gvEstimatePermanentRepairs, permanentRepairs) + addNewPrRow(); ;
updateSubtotal(totalPermanentRepairs, permanentRepairsTotal);
bindData(permanentRepairs, gvEstimatePermanentRepairs);
clearPrForm();
}
else
{
erErrorMessage.Text = "Please enter only number amounts in Quantity and Unit Price field.";
}
}