私のコードビハインドでは、Page_Load イベントで SQL db からチェックボックス リストを作成し、button_click イベントですべての値をチェックボックス リストなどから取得しました。
したがって、いくつかのチェックボックスをチェックしてからボタンをクリックすると、最初に page_load イベントがチェックボックスリストを再作成したため、チェックボックスの値を取得するときにボックスがチェックされませんでした... page_load イベントに追加するのを逃しましたif (!this.IsPostBack)
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
// db query and create checkboxlist and other
SqlConnection dbConn = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
string query;
try
{
query = "SELECT [name], [mail] FROM [users]";
dbConn.Open();
SqlDataAdapter da = new SqlDataAdapter(query, dbConn);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count != 0)
{
checkboxlist1.DataSource = ds;
checkboxlist1.DataTextField = "name";
checkboxlist1.DataValueField = "mail";
checkboxlist1.DataBind();
}
else
{
Response.Write("No Results found");
}
}
catch (Exception ex)
{
Response.Write("<br>" + ex);
}
finally
{
dbConn.Close();
}
}
}
protected void btnSend_Click(object sender, EventArgs e)
{
string strChkBox = string.Empty;
foreach (ListItem li in checkboxlist1.Value)
{
if (li.Selected == true)
{
strChkBox += li.Value + "; ";
// use only strChkBox += li + ", "; if you want the name of each checkbox checked rather then it's value.
}
}
Response.Write(strChkBox);
}
出力は期待どおりで、メール送信関数で使用するためのセミコロン区切りのリストです。
bill@contoso.com; jeff@corp.inc; sam@dot.net
小さな問題に対する長い答え。私はこれの専門家とはかけ離れており、これよりも優れた解決策があることを知っていますが、一部の人にとっては役立つかもしれないことに注意してください.