page_load で DDL をバインドすると、ページが読み込まれるたびにバインドされます。したがって、コードを簡単に推測すると、if ステートメントを追加して、page.isPostback かどうかを確認するだけです。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ddlDemo.DataSource = new string[] { "asdf", "jklö" };
ddlDemo.DataBind();
}
}
protected void btnDemo_Click(object sender, EventArgs e)
{
Debug.WriteLine(ddlDemo.Text);
SqlConnection con = null;
using (con = new SqlConnection("YOUR CON STRING"))
{
SqlCommand com = new SqlCommand( "update tblXYZ set ABC = @A", con);
SqlParameter param = new SqlParameter("A", System.Data.SqlDbType.YOURTYPE);
param.Value = ddlDemo.Text;
com.Parameters.Add(param);
con.Open();
int affectedRows = com.ExecuteNonQuery();
Debug.WriteLine(affectedRows + " affected!");
con.Close();
}
}
このaspxページ内
<body>
<form id="form1" runat="server">
<asp:DropDownList ID="ddlDemo" runat="server">
</asp:DropDownList>
<asp:Button ID="btnDemo" runat="server" Text="Button" onclick="btnDemo_Click" />
</form>
</body>
とにかく、ユーザー入力を使用してデータベース レコードを更新/挿入/削除する前に、常にユーザー入力を確認する必要があります。