【发布时间】:2013-01-29 21:35:50
【问题描述】:
我正在编写一个基于用户输入构建 SQL 查询的 Web 应用程序。我目前正在使用一些没有问题的复选框。但是,我没有对复选框进行硬编码,而是使用以下代码在 Page_Load 上动态填充它们:
protected void Page_Load(object sender, EventArgs e)
{
//init();
sql.Open();
if (!Page.IsPostBack)
{
SqlCommand cmd = new SqlCommand("SELECT DISTINCT [value] FROM [table]", sql);
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
chkLst.Items.Add(rdr[0].ToString());
rdr.Close();
}
sql.Close();
}
填充效果很好。但是,当我尝试检索 chkLst.Items.Selected 属性时,它始终设置为 false,因此使列表无法用于过滤。以下是我在提交时执行的代码的相关部分:
foreach (ListItem li in chkLst.Items)
if (li.Selected)
cmd += li.Text;
由于 Selected 属性始终为 false,因此我的命令始终为空。我该怎么做才能解决这个问题?
【问题讨论】:
-
CheckedListBox是一个winforms控件,不是吗?您正在显示 ASP.NET 代码(IsPostBack 等)。 -
您是否希望选择项目(即您是否在测试用例期间选择了它们)?如果您希望它们显示为选中状态,我相信您可以通过编程方式设置属性,但当然这不会是默认行为。
-
chkLst是您应用程序的一部分吗?我在前面的代码中看到您正在清除“chkLstUALFeature”和chkLstUALFunction,然后不再引用它们。 -
抱歉,Brian,我在其他两个 chkLst 中留下了一些不相关的代码。我使用了其中的三个,但忘了去掉这两行(因为它们与这个问题无关)。
-
“下面是我在提交时执行的代码的相关部分” 我建议还是发布其余部分。这个事件处理程序的某个地方是你的问题。
标签: c# asp.net .net checklistbox