Обновить общий список в ASP.NET после обратной отправки или обновления страницы

#c# #asp.net

#c# #asp.net

Вопрос:

У меня есть другие проблемы, и я не могу их решить.

В ASP.NET У меня есть объект DropDownList, который берет данные из общего списка. В ASP.NET страница

 <tr><td>Choose category</td>
<td><asp:DropDownList id="list_categories" runat="server"></asp:DropDownList></td>
<td>
<asp:RequiredFieldValidator ControlToValidate="list_categories" runat="server" Display="Static" ErrorMessage="Select category" ID="verify_category" ValidationGroup="add_link_group">
</asp:RequiredFieldValidator></td></tr>
 

и код, лежащий в основе :

 private void generate_select( DropDownList select ) {

         BusinessLayerArcht layer = LoadDataFromBL();

         foreach ( CategoriesCtrlDto cto in layer.Categories ) {          
            select.Items.Add( cto.Name );
         }
      }
 

и Page_Load

 generate_select( list_categories );
 

Я пробовал с помощью Clear(), но когда я добавил новую ссылку в выбранную категорию, она будет вставлена в первую категорию
Если я не позвоню.Функция Clear () затем вставка в порядке, но после обновления страницы список содержит повторяющиеся категории

Изначально у меня был GMail YMail AOL

после вставки новой ссылки или другого события, которое обновляет страницу, список будет отображаться как: GMail YMail AOL GMail YMail AOL

Если я обновлю страницу четыре раза, в списке появится GMail YMail AOL GMail YMail AOL GMail YMail AOL GMail YMail AOL GMail YMail AOL

Повторяется четыре раза, поэтому он дублируется при каждой обратной передаче или обновлении страницы. Я попытался также очистить кеш, если (Page.isPostBack)

Ответ №1:

Вы должны сделать

 if(!Page.IsPostBack)
generate_select(list_categories);
 

!Page.IsPostBack ==> если НЕ является обратной отправкой. Если вы выполняете код при каждой обратной передаче, он будет вставлять повторяющиеся записи