2012-02-15 2 views
2

Я новичок в ASP> NET (C#). Но я использую Winform раньше.Asp.net Выпадающий список выбранный индекс изменен И TextChanged Events not Fire? (C#)

В моем проекте у меня есть два раскрывающегося списка. если я сменил один, второй изменит auto.

Но даже событие также не срабатывает в 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> 

C#

Я уже добавленные элементы как в списке в случае загрузки страницы. Но когда я изменяю выбранный индекс ddlOutlet, измененное событие не запускается. Поэтому я также попытался использовать TextChanged Events. Но ничего не случилось. Что проблема?.

Page Load Event -

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;[email protected]$;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;[email protected]$;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. У меня есть два элемента управления списком вниз и кнопка ONE.

Но когда я изменяю выбранный индекс ddlOutlet изменен. Событие не срабатывает. После нажатия кнопки «Исправленные события» Правильно. Но до этого они не стреляют. Я не знаю, почему это происходит.

Я даю полный код ниже.

Мой полный 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> 

мой код -

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;[email protected]$;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;[email protected]$;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;[email protected]$;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) 
     { 

     } 
    } 
} 
+0

Привет, Я не думаю, что код, в котором редактор ddlOutlet заполнен элементами. Вы делаете это в событии Page_Load? Если это так, отправьте этот код также – platon

+0

Я добавил кодировку события загрузки страницы. Пожалуйста, дайте решения. Благодарю. – Sagotharan

+0

Проверка на постбэка на странице загрузки на связывании DROPDOWNLIST, как: частная пустота Page_Load (объект отправителя, EventArgs е) {(! IsPostBack) если { // Bind Первый DROPDOWNLIST Здесь }} –

ответ

1

попытка путем добавления Page.IsPostBack в вашем page_Load случае ...

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

EDIT - 1

Пример кода из ASPX страницы в веб-приложения

<%@ 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) 
     { 

     } 
    } 
} 

Sample код ASPX страницы в веб-сайт

<%@ 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) 
    { 

    } 
} 
+0

Раньше проверял состояние (! IsPostBack). Нужно ли проверять (! Page.IsPostBack) также? – Sagotharan

+0

можете ли вы обновить свою полную страницу aspx и заполнить страницу .cs в своем вопросе? – Pankaj

+0

теперь только я нахожу, .. Событие увольняется после того, как я нажму кнопку на своей странице. Почему это происходит? Есть ли какое-либо решение, которое даже срабатывает до нажатия кнопки? – Sagotharan

3

Создание выпадающего списка (который изменяет содержание е другой)

Activity: <asp:DropDownList ID="cmbActivity" runat="server" OnSelectedIndexChanged="cmbActivity_SelectedIndexChanged" AutoPostBack="true" /> 

Затем в C#, ваше событие нагрузки должно быть, как это

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

Ваш selectedIndex_Changed метод все еще остается тем же самым. Это должно сработать. Имейте более одного элемента в списке, чтобы быть уверенным. Надеюсь, это поможет

Смежные вопросы