【发布时间】:2020-04-11 20:28:41
【问题描述】:
使用此代码,我将使用复选框填充下拉列表以进行多选,
sql = @String.Format(" SELECT p FROM `dotable`; ");
using (OdbcConnection cn =
new OdbcConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString))
{
using (OdbcCommand cmd = new OdbcCommand(sql, cn))
{
cmd.CommandType = CommandType.Text;
cmd.Connection.Open();
using (OdbcDataAdapter sda = new OdbcDataAdapter(cmd))
{
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
pddl.DataSource = dt;
pddl.DataTextField = "p";
pddl.DataValueField = "p";
pddl.DataBind();
}
}
}
}
我需要将存储在数据库中的值与填充下拉列表的表的值进行比较。
如果存储在数据库中的值等于下拉列表中的值,则选中相应的复选框。
在下拉列表中我有:
Peter
Mike
Myriam
Roger
Marilyn
Barbara
关于存储的数据库:
Mike; Marilyn;
我尝试了这个解决方案但没有成功,因为在 DropDownList 中未选中相应复选框的值。
using (OdbcCommand cmd = new OdbcCommand(sql, cn))
{
cmd.CommandType = CommandType.Text;
cmd.Connection.Open();
OdbcDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string p = dr["p"].ToString();
string[] w = reader["w"].ToString().Split(';');
foreach (string x in w)
{
foreach (ListItem item in pddl.Items)
{
if (x.ToString().Trim() == p.ToString().Trim())
{
Response.Write(x.ToString().Trim() + " >>> " + p.ToString().Trim() + "<br />");
item.Selected = true;
}
}
}
}
}
有什么想法吗?
第一次编辑
我已经试过了:
string[] w = reader["w"].ToString().Split(';');
foreach (string x in w)
{
while (dr.Read())
{
string p = dr["p"].ToString();
Response.Write("p = " + p.ToString() + "<br />");
Response.Write("w = " + x.ToString().Trim() + "<br /><br />");
if (x.ToString().Trim() == p.ToString().Trim())
{
foreach (ListItem item in pddl.Items)
{
Response.Write(x.ToString().Trim() + " >>> " + p.ToString().Trim() + "<br />");
item.Selected = true;
}
}
}
}
但是输出是:
p = Peter
x = Mike
p = Mike
x = Mike
p = Myriam
x = Mike
p = Roger
x = Mike
p = Marilyn
x = Mike
p = Barbara
x = Mike
在变量“p”上,我有下拉列表中的所有值。
在变量“x”上,我存储了数据库中的所有值。
但在变量 'x' 上,我只有值 'Mike' 而不是值 'Miryam'。
有什么想法吗?
【问题讨论】:
-
也许下拉列表中的列表会更正确地存储在数据库中?这也将允许您编写一个查询来获取名称以及 IsSelected 属性,您可以将其数据绑定到您的控件
-
@NeutralHandle 感谢您的回复,请查看我的编辑问题。