PageLoad と実行時にいくつかの DropDownLists を入力する必要があります。onSelectedItemChanged()
最初の ddl の選択された値に応じて 2 番目の ddl を埋める必要があるため、2 番目の DropDownList が最初に呼び出された場合に埋められます。SQLクエリから2番目のddlのデータを取得します。
これが私のコードです:
private void fill_dropdown_schueler(string klasse)
{
string query_select = "";
SqlConnection con = new SqlConnection();
SqlDataReader dr;
SqlCommand select;
ArrayList schueler = new ArrayList();
con.ConnectionString = ConfigurationManager.ConnectionStrings["Projektwoche"].ConnectionString;
try
{
if (con.State == ConnectionState.Closed)
con.Open();
/*** Fill DropDownList4 "Schüler" ***/
query_select = "SELECT [Nachname], [Vorname], [Katalognummer] FROM [Projektwoche].[dbo].[Einträge] WHERE Klasse='" + klasse + "'ORDER BY [Nachname] ASC;";
select = new SqlCommand(query_select, con);
dr = select.ExecuteReader();
int index = 0;
while (dr.Read())
{
schueler.Add((String)dr["Nachname"] + " " + (String)dr["Vorname"] + " Nr: " + (String)dr["Katalognummer"]);
kata[index] = Convert.ToInt32((String)dr["Katalognummer"]);
index++;
}
dr.Close();
DropDownList4.DataSource = schueler;
DropDownList4.DataBind();
schueler.Clear();
con.Close();
}
catch (Exception e)
{
Label7.Text = e.ToString();
}
}
Katalognummer]
そのため、値をグローバル配列に保存してkata[]
、2 番目の DropDownList のインデックスでそれらの値にアクセスできるようにします (さらにクエリを実行する必要はありません)。
配列の値をkata[]
ラベルに入れると、それらはすべて問題ありませんが、Label.Text = kata[].ToString();
この関数に入れる場合に限ります。
この関数はonSelectedItemChanged
、最初の ddl のメソッドで呼び出されます。
kata[]
他の関数で配列の値を取得したい場合、すべての値は 0 であり、クエリから取得した値が必要なわけではありません。
この関数の後に配列kata[]
がクリアされるようです???