C# Asp.net Dropdownlist所选索引已更改,而TextChanged事件未触发?(C)

C# Asp.net Dropdownlist所选索引已更改,而TextChanged事件未触发?(C),c#,asp.net,C#,Asp.net,我是ASP>NETC新手。但是我以前用过Winform 在我的项目中,我有两个下拉列表。如果我换一个,。。第二个将自动更改 但即使事件也不会在ASP.net中触发。毫无疑问,我该如何处理 <div id="Div1" class="ui-content ui-body-a" runat="server"> <asp:dropdownlist id="ddlOutlet" runat="server" autopostback="True" onselectedindex

我是ASP>NETC新手。但是我以前用过Winform

在我的项目中,我有两个下拉列表。如果我换一个,。。第二个将自动更改

但即使事件也不会在ASP.net中触发。毫无疑问,我该如何处理

<div id="Div1" class="ui-content ui-body-a" runat="server">
    <asp:dropdownlist id="ddlOutlet" runat="server" autopostback="True" onselectedindexchanged="ddlOutlet_SelectedIndexChanged"
        ontextchanged="ddlOutlet_TextChanged">
                </asp:dropdownlist>
    <br />
    <asp:dropdownlist id="ddlServedAt" runat="server">
                </asp:dropdownlist>
    <br />
    <asp:button id="btnLogin" runat="server" text="LogIn" />
</div>
选定项目-

我读了一些相同的问题解决方案,但他们告诉我设置AutoPostBack=True。我也检查过了

我不知道为什么ASP.net也很难激活事件

更新问题

在我的项目中,。。我正在使用jquerymobilehttp://jquerymobile.com/ 使用ASP.Net和mysql。 我有两个下拉列表控件和一个按钮

但当我更改DDL时,所选索引更改事件不会触发。单击按钮后,事件将正确触发。但在此之前,他们不会开火。我不知道为什么会这样

我在下面给出了我的完整代码

我的完整ASPX文件:-

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OutLet.aspx.cs" Inherits="MobileApp.OutLet" %>

<!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 runat="server">
    <title></title>
     <meta name="viewport" content="width=device-width; height=device-height; initial-scale=1.0; maximum-scale=1.5; user-scalable=no;" />
     <link href="Styles/jquery.mobile-1.0b3.css" rel="stylesheet" type="text/css" />

    <script src="Scripts/jquery-ui-1.8.16.custom.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery.mobile-1.0b3.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server" data-ajax="false">
        <div id="mainheader" class="ui-header-fixed ui-bar-a">  

        </div>
        <div id="Div1" class="ui-content ui-body-a" runat="server">

           <%-- <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>--%>
                    <asp:DropDownList ID="ddlOutlet" runat="server" 
    AutoPostBack="True" onselectedindexchanged="ddlOutlet_SelectedIndexChanged" 
    ontextchanged="ddlOutlet_TextChanged">
                    </asp:DropDownList>
                    <br />
                    <asp:DropDownList ID="ddlServedAt" runat="server" AutoPostBack="True">
                    </asp:DropDownList>
                    <br />
                    <asp:Button ID="btnLogin" runat="server" Text="LogIn" 
                onclick="btnLogin_Click" />
               <%-- </ContentTemplate>
            </asp:UpdatePanel>   --%>       
        </div>
    </form>
</body>
</html>
尝试在页面加载事件中添加Page.IsPostBack

编辑-1

Web应用程序中ASPX页面的示例代码

网站中ASPX页面的示例代码


创建一个下拉列表来更改另一个列表的内容

Activity: <asp:DropDownList ID="cmbActivity" runat="server" OnSelectedIndexChanged="cmbActivity_SelectedIndexChanged" AutoPostBack="true" />
您选择的已更改索引的方法仍然保持不变。这应该行得通。确保列表中有多个项目。
我希望这会有所帮助,OP在他的问题中已经提到了这一点,但是我缺少了autopostback=True

嗨,我不认为ddlOutlet编辑器中的代码中填充了项目。您是否在页面加载事件中执行此操作?如果是这样的话,也发布此代码。我还添加了my page load事件编码。请给出一个解决方案。谢谢。请检查绑定Dropdownlist上的页面加载回发,例如:私有无效页面_Loadobject sender,EventArgs e{if!IsPostBack{//Bind First Dropdownlist Here}}您是否有机会使用jquerymobile?您的代码本身没有问题。虽然您不需要在每次加载页面时进行绑定。将您的下拉列表绑定到“如果”!IsPostBack{//放入您的代码}。还有,为什么您需要这里的onTextChanged事件?我尝试了if!在开始之前,请先检查回发条件。是否需要检查!Page.IsPostBack也可以吗?你能在你的问题中更新完整的aspx页面和完整的.cs页面吗?现在只有我发现,。。事件在我单击页面中的按钮后激发。为什么会这样?。有什么解决方案在按钮按下之前就启动了吗?我更新了,长官。请查看问题。请检查我的编辑。在我的示例中,无论是在网站还是在web应用程序中,它都工作得很好。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OutLet.aspx.cs" Inherits="MobileApp.OutLet" %>

<!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 runat="server">
    <title></title>
     <meta name="viewport" content="width=device-width; height=device-height; initial-scale=1.0; maximum-scale=1.5; user-scalable=no;" />
     <link href="Styles/jquery.mobile-1.0b3.css" rel="stylesheet" type="text/css" />

    <script src="Scripts/jquery-ui-1.8.16.custom.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery.mobile-1.0b3.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server" data-ajax="false">
        <div id="mainheader" class="ui-header-fixed ui-bar-a">  

        </div>
        <div id="Div1" class="ui-content ui-body-a" runat="server">

           <%-- <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>--%>
                    <asp:DropDownList ID="ddlOutlet" runat="server" 
    AutoPostBack="True" onselectedindexchanged="ddlOutlet_SelectedIndexChanged" 
    ontextchanged="ddlOutlet_TextChanged">
                    </asp:DropDownList>
                    <br />
                    <asp:DropDownList ID="ddlServedAt" runat="server" AutoPostBack="True">
                    </asp:DropDownList>
                    <br />
                    <asp:Button ID="btnLogin" runat="server" Text="LogIn" 
                onclick="btnLogin_Click" />
               <%-- </ContentTemplate>
            </asp:UpdatePanel>   --%>       
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MySql.Data.MySqlClient;

namespace MobileApp
{
    public partial class OutLet : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            HelpingFunctions hp = new HelpingFunctions();

            string id = Request.QueryString["id"];
            if (!Page.IsPostBack)
            {
                MySqlConnection connection = new MySqlConnection("server=192.168.1.100;username=mcubic;password=mcs@2011$;database=mcubic;");
                string query = "SELECT c.Outlet_Master_Name,d.Fbserved_Served FROM mcs_user a, mcs_user_outlet b,outlet_master c,fb_served d WHERE a.Mcs_User_Id='" + id + "' and"
                                + " a.Mcs_User_Id = b.Mcs_User_Outlet_User_Id and c.Outlet_Master_Id = b.Mcs_User_Outlet_Outlet_Id and c.Outlet_Master_Id=d.Fbserved_outletid";
                MySqlCommand command = new MySqlCommand(query, connection);
                connection.Open();
                MySqlDataReader Reader = command.ExecuteReader();
                while (Reader.Read())
                {
                    ddlOutlet.Items.Add(Reader[0].ToString());
                    ddlServedAt.Items.Add(Reader[1].ToString());
                }
                connection.Close();
            }

        }

        protected void ddlOutlet_SelectedIndexChanged(object sender, EventArgs e)
        {
            MySqlConnection connection = new MySqlConnection("server=192.168.1.100;username=mcubic;password=mcs@2011$;database=mcubic;");
            string query = "select Fbserved_Served from fb_served where Fbserved_outletid = (select Outlet_Master_Id from outlet_master where Outlet_Master_Name ='" + ddlOutlet.SelectedItem.ToString() + "')";
            MySqlCommand command = new MySqlCommand(query, connection);
            connection.Open();
            MySqlDataReader Reader = command.ExecuteReader();
            while (Reader.Read())
            {
                ddlServedAt.SelectedValue = Reader[0].ToString();
            }
            connection.Close();
        }

        protected void ddlOutlet_TextChanged(object sender, EventArgs e)
        {
            //MySqlConnection connection = new MySqlConnection("server=192.168.1.100;username=mcubic;password=mcs@2011$;database=mcubic;");
            //string query = "select Fbserved_Served from fb_served where Fbserved_outletid = (select Outlet_Master_Id from outlet_master where Outlet_Master_Name ='" + ddlOutlet.SelectedItem.ToString() + "')";
            //MySqlCommand command = new MySqlCommand(query, connection);
            //connection.Open();
            //MySqlDataReader Reader = command.ExecuteReader();
            //while (Reader.Read())
            //{
            //    ddlServedAt.SelectedItem.Value = Reader[0].ToString();
            //}
            //connection.Close();
        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {

        }
    }
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        //your page load code.....
    }
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!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 runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <asp:DropDownList  id="id1" runat="server" AutoPostBack="true" 
            onselectedindexchanged="id1_SelectedIndexChanged">
        <asp:ListItem Text="1" Value="1"></asp:ListItem>
        <asp:ListItem Text="2" Value="2"></asp:ListItem>
        </asp:DropDownList>
        <asp:DropDownList  id="id2" runat="server"></asp:DropDownList>
    </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void id1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %>

<!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 runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList  id="id1" runat="server" AutoPostBack="true" 
            onselectedindexchanged="id1_SelectedIndexChanged">
        <asp:ListItem Text="1" Value="1"></asp:ListItem>
        <asp:ListItem Text="2" Value="2"></asp:ListItem>
        </asp:DropDownList>
        <asp:DropDownList  id="id2" runat="server"></asp:DropDownList>
    </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default4 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void id1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
}
Activity: <asp:DropDownList ID="cmbActivity" runat="server" OnSelectedIndexChanged="cmbActivity_SelectedIndexChanged" AutoPostBack="true" />
if (Session["staffId"] == null)
        {
            Response.Redirect("~/login.aspx");
        }
        else
        {
            if (!IsPostBack)
            {
             cmbActivity.DataSource = a;
             cmbActivity.DataTextField = "activityName";
             cmbActivity.DataValueField = "activiyId";
            }
        }