asp:DropdownList没有为SelectedIndexChanged事件触发

时间:2015-04-30 19:38:06

标签: asp.net vb.net

当我更改下拉列表的选择时,Change事件不会触发。我在方法中放了一个断点,程序不会停止。

这是我的标记:

<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>

更新 此应用程序是一个Web站点,而不是Web应用程序。 (我不知道有什么不同,但现在我做了。)在试图找出SelectedIndexChange事件不会触发的方式时,我添加了一个按钮和一个click事件。当我在下拉列表中更改选择时,不会触发任何事件。单击该按钮时,将触发click事件,然后触发selectedindexchange事件。

我不认为事件SelectedIndexChanged会起作用。

当下拉列表更改时,还有其他方法可以连接回发吗? 当列表更改时,我可以以某种方式从javascript函数调用中使用__doPostback吗?

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

我无法获取asp:DropdownList来触发SelectedIndexChanged事件。所以这就是我完成任务的方式。

如上所示动态添加下拉列表并添加调用javascript的更改事件:

$path = "site/assets/files"
$folders = getFilesInDir($path);

foreach($folders as $folder)
{
    $files = getFilesInDir($path . "/" . $folder);
    var_dump($files);

此函数必须放在.js文件中。这个网站已有一个.js文件。它还有一些我用来完成任务的AJAX调用。 在UpdateLocationList()中,我获取在下拉列表中设置为值属性的服务类型的ID。然后,我使用服务类型ID将已经是.js文件的一部分的函数用于LocationDetails页面,以仅显示该服务类型的工具。这是功能:

 onchange='UpdateLocationList()'

像魅力一样工作。

感谢您的所有帮助。