У меня возникли проблемы с повторным заполнением выпадающего списка внутри обновленной панели. При загрузке страницы, я загружаю выпадающий список:Repupulate Asp.Net DropDownList в UpdatePanel
this.dropdownFacility.Items.Clear();
this.dropdownFacility.DataSource = table;
this.dropdownFacility.DataTextField = "FacilityName";
this.dropdownFacility.DataValueField = "FacilityID";
this.dropdownFacility.DataBind();
переменные «таблица» является DataTable, что я заселить из базы данных SQL. Это работает и показывает все мои значения после загрузки страницы в первый раз. Затем, внутри моей страницы, у меня есть JQuery диалог, который отображает:
<div id="assignmentDialog" title="Process Assignment">
<div style="margin:10px; font-size:16px; ">
<asp:Label runat="server" Text="Select A Facility:*" Font-Bold="true" style="width:140px; display:inline-block; vertical-align:text-top; text-align:right;" />
<asp:DropDownList runat="server" ID="dropdownFacility" />
<asp:LinkButton runat="server" ID="linkNewFacility" Text="New" ForeColor="Blue" OnClientClick="OpenFacilityDialog();" />
</div>
</div>
После нажатия на кнопку ссылки, еще диалоговое окно JQuery позволяет пользователю вводить данные для объекта. Когда они будут сделаны, они могут нажать кнопку, чтобы отправить данные:
<asp:Button runat="server" ID="NewFacility" Text="Submit" OnClick="NewFacility_Clicked" OnClientClick="return CheckFacilityData();" style="display: block; text-align:center; margin: 0 auto;" />
Здесь возникает проблема. После нажатия кнопки, я вижу, что запись была вставлена в таблицу. Кроме того, с точками разрыва в моем коде во время загрузки страницы, я вижу, что после того, как я перекрою выпадающее меню, количество элементов увеличилось на 1, показывая, что есть новая запись. Однако на фактической странице эта новая запись не отображается в раскрывающемся списке. Ниже описано, как я определяю свою панель обновления с помощью триггеров:
<asp:UpdatePanel runat="server" ID="assignmentUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="NewFacility" EventName="Click" />
</Triggers>
...
Может ли кто-нибудь увидеть, что я делаю неправильно?
Можем ли мы увидеть код для вашего обработчика событий Click NewFacility? – Lopsided
Код в четном обработчике только отправляет запись в базу данных и работает отлично. –
После большего количества тестов я обнаружил, что удаление диалоговых вызовов JQuery для divs устраняет проблему переполнения выпадающего списка. Тем не менее, я все равно хотел бы использовать диалоговую логику. Возможно, это обходное решение? –