正如标题所说我遇到的问题是下拉列表的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" %>
答案 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中添加一个断点来查看它是否被击中?