奇妙な問題があります。私のプログラムでは、ユーザーはドロップダウン ボックスを操作し、[追加] ボタンを押して、選択した項目をリスト ボックスに入力します。最終的に、INSERT コマンドを使用して、これらのアイテムを MYSQL データベースに送信します。ユーザーが [追加] ボタンを押すと、項目が一般的なリストとリストボックスに追加され、ポストバックではすべて問題ないように見え、一日中項目を追加できます。ただし、[送信/保存] ボタンをクリックしてデータをサーバーに送信すると、ポストバックの原因に関係なく、リストはポストバックごとに追加されたデータを自分自身に何度もコピーし続けます。lstbox で結果を確認でき、List.count が増加していることがわかります。
page_load セクションにコードがありません。ただし、リストデータを保持するためにセッションプロパティを使用します。
public List<string> activityProp
{
get
{
if (HttpContext.Current.Session["codelist"] == null)
{
HttpContext.Current.Session["codelist"] = new List<string>();
}
return HttpContext.Current.Session["codelist"] as List<string>;
}
set
{
HttpContext.Current.Session["codelist"] = value;
}
}
ボタンのコードは次のとおりです。sqlsetter() メソッドには、挿入文字列を含む一般的な SQL コマンド構造が含まれているだけです。このボタンからのみ起動されます。
protected void cmdSave_Click(object sender, EventArgs e)
{
//this will use the 'test' class to do a rule check on the day
test therules = new test();
bool comp = therules.check(dayProp, timeProp, activityProp);
if (comp == true)
{
lblComp.Text = "You're ok!";
lblComp.ForeColor = Color.Green;
lblError.Text = "";
SQLdaysetter();
}
else
{
string zeerror = therules.getError();
lblComp.Text = "You're not ok!";
lblError.Text = "at " + zeerror;
lblComp.ForeColor = Color.Red;
lblError.ForeColor = Color.Red;
}
}
SQLのもの:
using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["theConnectionString"].ConnectionString))
{
conn.Open();
using (MySqlCommand cmdIns = new MySqlCommand(sqlstate, conn))
{
cmdIns.ExecuteNonQuery();
cmdIns.Dispose();
}
conn.Close();
}
たぶん、これは問題に関係していないかもしれませんが、どこを見ればいいのでしょうか?