2015-04-30 2 views
0

Когда я меняю выбор своего выпадающего списка, событие «Изменить» не срабатывает. Я поставил точку останова в методе, и программа не останавливается.asp: DropdownList не срабатывает для события SelectedIndexChanged

Это моя разметка:

<form id="form1" runat="server"> 
     <div style='text-align:center;'> 
     <a style='text-decoration:none;font-size:16px;color:blue;background-color:white;width:200px;padding:4px;' href='LocationDetails.aspx?Location_ID=0' target='detailPanel'> Add Location 
     </a></div> 
     &nbsp 
     <div style='text-align:left;'> 
      <asp:Label ID="FacilityTypeLbl" runat="server">Facility Type:</asp:Label> 
      <asp:DropDownList ID="FacilityTypeDDL" runat="server" AutoPostBack="true" EnableViewState="true" OnSelectedIndexChanged="FacilityTypeDDL_SelectedIndexChanged"> 
      </asp:DropDownList> 
     </div> 
     <hr/> 
    <%ListLocations()%> 
</form> 

Это мой метод Page_Load для заполнения списка и она отлично работает.

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 

     If Not Page.IsPostBack Then 
      GetServiceTypes() 
      FacilityTypeDDL.DataSource = dtServiceTypes 
      FacilityTypeDDL.DataTextField = dtServiceTypes.Columns("Title").ToString() 
      FacilityTypeDDL.DataValueField = dtServiceTypes.Columns("ID").ToString() 
      FacilityTypeDDL.DataBind() 
     End If 
    End Sub 

Это мое событие изменения:

Protected Sub FacilityTypeDDL_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles FacilityTypeDDL.SelectedIndexChanged 
     strFacilityValue = FacilityTypeDDL.SelectedValue 
     ListLocations() 
End Sub 

я поставил точку останова на первой строке кода и после изменения выбора выпадающий он не останавливается на этом мероприятии.

Что я делаю неправильно?

ОБНОВЛЕНИЕ Это моя вся разметка. Может быть что-то не так?

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Locations.aspx.vb" Inherits="Editor_Locations" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="LocationHead" runat="server"> 
    <title>Locations</title> 
    <meta http-equiv="Content-Language" content="en-us"/> 
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/> 
</head> 
<body> 
<form id="form1" runat="server">   
     <div style='text-align:left;'> 
      <asp:Label ID="FacilityTypeLbl" runat="server">Facility Type:</asp:Label> 
      <asp:DropDownList ID="FacilityTypeDDL" runat="server" AutoPostBack="true" EnableViewState="true" OnSelectedIndexChanged="FacilityTypeDDL_SelectedIndexChanged"> 
      <asp:ListItem>Test1</asp:ListItem> 
      <asp:ListItem>test2</asp:ListItem> 
      <asp:ListItem>Test34</asp:ListItem> 
      </asp:DropDownList> 
     </div> 
     <hr/> 
</form> 
</body> 
</html> 

UPDATE Это приложение является веб-сайт, а не веб-приложение. (Я не знал, что есть разница, но теперь я это делаю.) В попытке выяснить, как событие SelectedIndexChange не срабатывает, я добавил кнопку и событие click. Когда я изменяю выделение в раскрывающемся списке, событие не срабатывает. Когда я нажимаю кнопку, происходит событие клика, затем срабатывает событие selectedindexchange.

Я не думаю, что событие SelectedIndexChanged будет работать.

Есть ли другой способ подключить обратный вызов при изменении раскрывающегося списка? Можно ли каким-либо образом использовать __doPostback из вызова функции javascript при изменении списка?

Любые предложения были бы высоко оценены!

+0

Is AutoEventWireup = "true", установленный в вашей директиве .aspx Page? – Sami

+0

Устанавливается как «false». Я установил его «true», и он все еще не запускает событие. –

+0

Вы пробовали 'ViewStateMode =" Включено "' это для вашего 'DropdownList'? –

ответ

0

Я не смог получить asp: DropdownList, чтобы запустить событие SelectedIndexChanged. Так вот как я выполнил задачу.

Добавление раскрывающегося списка динамически, как показано выше, и добавив событие изменения, который вызывает JavaScript:

onchange='UpdateLocationList()' 

Эта функция должна была быть помещена в .js файл. На этом веб-сайте уже был .js-файл. У него также были некоторые вызовы AJAX, которые я использовал для выполнения задачи. В UpdateLocationList() я получаю идентификатор типа службы, который был установлен как атрибут value в раскрывающемся списке. Затем я использую функцию, которая уже является частью файла .js на странице LocationDetails, используя идентификатор типа службы, чтобы отображать только объекты этого типа службы. Это функция:

function updateLocationList() { 
    var ddlFacilityType = document.getElementById("FacilityTypeDDL"); 
    var facilityValue = ddlFacilityType.options[ddlFacilityType.selectedIndex].value; 
    processAjax("/editor/Locations.aspx?Location_ID=" + facilityValue, "navPanel"); 
} 

Работает как очарование.

Спасибо за вашу помощь.

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