2014-02-07 3 views
0

У меня есть элемент управления DataBound DropDown (поэтому он заполнен запросом, указанным в конструкторе), и я бы хотел, чтобы этот запрос был заселен при нажатии кнопки. DropDown определяется следующим образом:Repopulate Dropdown on Button Нажмите

<asp:DropDownList ID="JobRelPhase_DropDown" runat="server" 
    DataSourceID="SqlDataSourceMYDATASOURCE" DataTextField="JobRelPhase" 
    DataValueField="id" OnSelectedIndexChanged="my_DropDown_SelectedIndexChanged" 
    AutoPostBack="True" style="text-align: center" 
    Width="684px" Font-Bold="True" AppendDataBoundItems="true" BackColor="White" 
    ForeColor="Black"> 
     <asp:ListItem Value="SELECT AN ITEM" disabled="disabled"></asp:ListItem> 
</asp:DropDownList>` 

и запрос определяется в SqlDataSourceMYDATASOURCE.

EDIT: Вот функция, которая вызывается при нажатии на кнопку:

protected void GenerateButton_Click(object sender, EventArgs e) 
{ 
    if (JobRelPhase_DropDown.SelectedIndex != -1) 
    { 
     if (JobActive()) 
     { 
      SetButton(GenerateButton, false); 
      //JobRelPhase_DropDown.SelectedIndex = -1; //to set back to the top of the list 
      JobRelPhase_DropDown.DataBind(); 
     } 
    } 
} 

ответ

1

Вы должны сначала очистить старые значения из выпадающего списка, а затем перепривязывают.

JobRelPhase_DropDown.Items.Clear(); 

т.е.

protected void GenerateButton_Click(object sender, EventArgs e) 
    { 
     if (JobRelPhase_DropDown.SelectedIndex != -1) 
     { 
      if (JobActive()) 
      { 
       SetButton(GenerateButton, false); 
       //JobRelPhase_DropDown.SelectedIndex = -1; //to set back to the top of the list 
       JobRelPhase_DropDown.Items.Clear(); 

       JobRelPhase_DropDown.DataBind(); 
JobRelPhase_DropDown.Items.Insert(0, new ListItem("SELECT AN ITEM")); 

      } 
     } 
    } 
+0

Это устранит мой элемент выбора по умолчанию - есть ли способ добавить его обратно вручную через мой код? – muttley91

+0

проверить отредактированный ответ. –

+0

Отлично, просто как это. Благодаря! – muttley91

3

Чтобы заселить выпадающий список, когда DropDownID установлен, просто называют DataBind() на него, и он будет отбоя. Вы бы назвать его в обработчик нажатия кнопки, как в:

protected void Button_Click(..) 
{ 
    //Since you have AppendDataBoundItems="true", have to clear list to reset 
    JobRelPhase_DropDown.Items.Clear(); 
    JobRelPhase_DropDown.DataBind(); 
} 
+0

Так функция я бегу один, который должен удалить элемент из списка путем изменения поля в базе данных (поле, которое проверяет запрос для, чтобы быть правдой), поэтому элемент больше не должен находиться в списке, когда я вызываю DataBind(), поскольку он был изменен на false. Тем не менее, элементы остаются в списке, когда я запускаю DataBind(). – muttley91

+0

Я добавил код обработчика событий нажатия кнопки. Может быть, потому, что я добавил свой собственный элемент в начало DropDownList, как вы можете видеть в моем исходном коде? – muttley91

+0

Вам не нужно сначала «Очистить» предметы? Я думаю, что они добавлены вместо замены исходных предметов. – Luaan

Смежные вопросы