SelectedIndexChanged事件在任何情况下都不会触发

时间:2013-06-05 15:25:24

标签: c# asp.net webforms

正如标题所说我遇到的问题是下拉列表的SelectedIndexChanged事件在任何情况下都不会触发。我花了几个小时寻找解决方案并尝试不同的事情。有些地方认为这是一个已知的bug并提供解决方法,但直到这一点,它们都没有为我工作。

有问题的下拉列表是在这里建立的:

<tr>
  <td>
    Select Project
  </td>
  <td>
    <asp:DropDownList ID="ddlProjects" runat="server" 
      OnSelectedIndexChanged="ddlProjects_SelectedIndexChanged" AutoPostBack="true">
    </asp:DropDownList>
  </td>
</tr>  

这对我来说似乎足够标准,所以我不知道哪里出错了。

编辑(对不起,我是新手):

代码背后:

protected void ddlProjects_SelectedIndexChanged(object sender, EventArgs e)
    {
        List<DashBoardImport> selectedProject = DBI.GetProject(Convert.ToInt32(ddlProjects.SelectedValue));
        foreach (var proj in selectedProject)
        {
            txtProjectName.Text = proj.ProjectName;
            this.ddlStatus.SelectedIndex = proj.Status.Equals("Current") ? 0 : 1;
            var priority = proj.Priority.PriorityName;
            if (priority.Equals("Low"))
            {
                ddlPriority.SelectedIndex = 0;
            }
            else if (priority.Equals("Medium"))
            {
                ddlPriority.SelectedIndex = 1;
            }
            else if (priority.Equals("High"))
            {
                ddlPriority.SelectedIndex = 2;
            }
            //txtRank.Text = proj.ProjectRank.ToString();
            txtBusinessArea.Text = proj.BusinessArea.BusinessAreaName;
            txtRequester.Text = proj.Requestor;
        }
        //selectedIndex.Value = ddlProjects.SelectedIndex.ToString();
    }  

无论如何都没有javascript触及此功能。我已经删除了它,试图把事情带回基础,可以这么说。我在onselectedindexchanged函数和其他几个地方的page_load中放置了断点,并且永远不会触发事件,并且所选索引永远不会从0更改。

EDIT2: 以下是几个人要求的代码。

<%@ Page Title="Future Projects" Language="C#" MasterPageFile="~/Site.Master" EnableEventValidation="true"
AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ITDashBoard.Web.Default" %>

2 个答案:

答案 0 :(得分:0)

AutoEventWireup="true"添加到您的页面中,如下所示

<%@ Page Language="C#" AutoEventWireup="true"  .................. %>

编辑:然后添加自己的事件处理程序

ddlPojects.SelectedIndexChanged += new EventHandler(ddlPojects_SelectedIndexChanged);

答案 1 :(得分:0)

您的代码和.aspx代码看起来很好。我怀疑是命名空间问题。

你可以发布你的页面指令(这个位在你的aspx页面<%@ Page Language="C#" .....中)。具体来说,我想看看inherits属性。我还需要{。1}}所在的.cs类的命名空间。

你是否也尝试在ddlProjects_SelectedIndexChanged中添加一个断点来查看它是否被击中?