在我的代码隐藏中,我在 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
一个小问题的长答案。请注意,我远不是这方面的专家,并且知道有比这更好的解决方案,但它可能对某些人有所帮助。