2016-12-03 6 views
1

私は、複数回使用したいメソッドを持っています。これは、基本的にドロップダウンリストに値を設定します。オブジェクト受け入れメソッドにドロップダウンが設定されない

public void PopulateDropdown(string selectedValue, object listname) 
{ 
    String connString = ConfigurationManager.ConnectionStrings["MySql"].ToString(); //Conn string 
    MySqlConnection mySqlConnection = new MySqlConnection(connString); //Objekt 
    MySqlCommand cmd = new MySqlCommand(); //cmd objekt 

    cmd.CommandText = "SELECT NAME FROM CustomerDb WHERE CITY = \"" + selectedValue + "\""; 
    cmd.CommandType = CommandType.Text; 
    cmd.Connection = mySqlConnection; 

    DropDownList dropDownList = listname as DropDownList; 
    mySqlConnection.Open(); 

    dropDownList.DataSource = cmd.ExecuteReader(); 
    dropDownList.DataTextField = "NAME"; 
    dropDownList.DataBind(); 
    mySqlConnection.Close(); 
} 

私の呼び出しは次のようになります。

protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string value = DropDownList3.SelectedValue; 
    PopulateDropdown(value, DropDownList4); 
} 

は、私は私のコールと私の方法が正しいことを知っているが、何らかの理由で、イムはできませんDropDownList3_SelectedIndexChangedでそれを呼び出すように。 DropDownList3の値を選択すると、デフォルト値の「都市の選択」が選択されて読み込まれます。

<asp:DropDownList ID="DropDownList3" CssClass="btn btn-default btn-md pull-right" runat="server" OnSelectedIndexChanged="DropDownList3_SelectedIndexChanged" AutoPostBack="true"> 
    <asp:ListItem>Select city</asp:ListItem> 
    <asp:ListItem>City1</asp:ListItem> 
    <asp:ListItem>City2</asp:ListItem> 
</asp:DropDownList> 
<asp:DropDownList ID="DropDownList4" runat="server" CssClass="btn btn-default btn-md pull-right" OnSelectedIndexChanged="DropDownList4_SelectedIndexChanged" AutoPostBack="true" Style=""> 
</asp:DropDownList> 

DropDownList3_SelectedIndexChangedは次のようになります。

protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e) 
{ 
     string value = DropDownList3.SelectedValue; 
     PopulateDropdown(value, DropDownList4); 
} 

ポストバックがメソッドにブレークポイントに到達しません。

+0

DropDownList4_SelectedIndexChangedには何がありますか?メソッドが呼び出されたかどうかを確認するために、DropDownList3_SelectedIndexChangedにブレークポイントを設定しましたか?また、 "Public void PopulateDropdown(...)"は、実際にはPublicの大文字Pですか? –

+0

私の答えを編集するつもりです2秒 –

+0

うーん。メソッドが呼び出されない –

答えて

0

これは、あなたの質問にお答えしますが、データベースから値を取得し、コンボボックスまたはドロップダウンリストを埋めるために、それらのデータを使用しているとき、私はこのコード/クエリを使用している場合まあ、私は本当に知らない:

String path = "Data Source = LOCALHOST; Initial Catalog= sample_database; username='root'; password=''"; 
     MySqlConnection sqlcon = new MySqlConnection(path); 
     MySqlCommand sqlcom = new MySqlCommand(); 
     MySqlDataReader sqlread; 

     sqlcon.Open(); 
     sqlcom.CommandType = CommandType.Text; 
     sqlcom.CommandText = "SELECT name from database_table where city = '"+TextBox1.text+"'"; 
     sqlcom.Connection = sqlcon; 
     sqlread = sqlcom.ExecuteReader(); 
     while (sqlread.Read()) //use loop to get all data in the specified column 
     comboBox1.Items.Add(sqlread[0].ToString()); //place the data gathered in the combobox or dropdownlist 
     sqlcon.Close(); 
+0

これをProductionで使用する場合は、クエリをパラメータ化する必要があります。 SQLインジェクションは、書かれているように広く開いています。 :) –

+0

ええ、これは学校の目的のためだけです。しかし頭のおかげで –

0

ページロード時にCityリストに値を設定すると、AutoPostBackによってリストがリロードされる可能性があります。 DropDownList's SelectedIndexChanged event not firing

+0

それはすでにtrueに設定されていますか? –

関連する問題