【问题标题】:Why are my .NET CheckListBox Items not selected?为什么我的 .NET CheckListBox 项目没有被选中?
【发布时间】: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


【解决方案1】:

其他人回答了我的问题,但他的回答似乎已被他或今天 SO 的只读期间删除。

解决方案是在 Page_Init 而不是 Page_Load 中填充我的列表。

感谢现在匿名的受访者!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多