Asp.net Dropdownlist选择索引更改AND TextChanged事件不火? (C#)

我是ASP> NET(C#)的新手。 但我之前使用的是Winform。

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

但即便是事件也没有在ASP.net中解雇。 没有事件如何管理?



C#

我已经在页面加载事件的下拉列表中添加了项目。 但是当我更改ddlOutlet选择的索引时,更改了事件而不是触发。 所以我也尝试了TextChanged Events。 但什么都没发生。 有什么问题?

页面加载事件 –

 protected void Page_Load(object sender, EventArgs e) { HelpingFunctions hp = new HelpingFunctions(); string id = Request.QueryString["id"]; 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.SelectedItem.Value = Reader[0].ToString(); } connection.Close(); } 

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

我不知道为什么ASP.net很难将事件解雇呢?

更新的问题

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

但是当我更改ddlOutlet选择的索引时,更改了事件而不是触发。 按钮后单击事件正确触发。 但在那之前他们不会开枪。 我不知道为什么会这样。

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

我的完整ASPX文件: –

             
<%-- --%>

<%-- --%>

我的代码 –

 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) { } } } 

尝试在page_Load事件中添加Page.IsPostBack

 protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //your page load code..... } } 

编辑 – 1

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

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

Web应用程序中的代码示例代码

 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) { } } } 

网站中ASPX页面的示例代码

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

代码隐藏在网站中的示例代码

 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:  

然后在你的C#中,你的load事件应该是这样的

 if (Session["staffId"] == null) { Response.Redirect("~/login.aspx"); } else { if (!IsPostBack) { cmbActivity.DataSource = a; cmbActivity.DataTextField = "activityName"; cmbActivity.DataValueField = "activiyId"; } } 

您的selectedIndex_Changed方法仍然保持不变。 这应该工作。 列表中有多个项目可以确定。 我希望这有帮助

OP在他的问题中已经有了这个,但我错过了autopostback="True"