2012-02-15 31 views
2

ASP> NET(C#)を初めて使用しています。しかし私は前にWinformを使用しています。Asp.netドロップダウンリストの選択されたインデックスが変更され、TextChangedイベントが発生しませんでしたか? (C#)

私のプロジェクトには2つのドロップダウンリストがあります。もし私が1つを変えれば、..第2のものは自動車を変えるでしょう。

でも、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にも試みました。しかし、何も起こらなかった。問題は何ですか?

ページロードイベント -

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はイベント発射も難しいのですか?

はQUESTION私のプロジェクトで

、..私はASP.NetとMySQLでjquerymobile(http://jquerymobile.com/)を使用していますを更新しました。 私は2つのドロップダウンリストコントロールと1つのボタンがあります。

しかし、私が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> 

私のコード - あなたのpage_LoadイベントでPage.IsPostBackを追加することにより、

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プロパティ) 場合 { //バインド初のDropDownListここ } } –

答えて

1

試して...

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

EDIT - WebアプリケーションでのASPXページの1

サンプルコード

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

の背後にあるコードのサンプルコード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" %> 

<!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

if(!IsPostBack)の条件を前にチェックしました。 if(!Page.IsPostBack)もチェックする必要がありますか? – Sagotharan

+0

あなたの完全なaspxページを更新し、あなたの質問に.csページを完成させることができますか? – Pankaj

+0

今私は見つける、私のページのボタンをクリックした後にイベントが発生します。なぜ起こるのか?ボタンがクリックされる前に起動するソリューションもありますか? – Sagotharan

3

ドロップダウン・リストを作成します( thの内容を変更するものEその他1)

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

その後、あなたのC#で、あなたのloadイベントが、この

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

ようにする必要がありますあなたのselectedIndex_Changed方法は同じまま。これはうまくいくはずです。リストに複数の項目があることを確認してください。 私はこれが助けてくれることを願っています

関連する問題