【问题标题】:Blank Items in CheckBoxList (Remove blank items)CheckBoxList 中的空白项(删除空白项)
【发布时间】:2014-07-10 12:47:51
【问题描述】:

我有一个相当烦人且愚蠢的问题。我在从数据库填充的 asp 页面上有一个复选框列表。我能够填充它,问题出在我进行特定检查以检查用户是否处于活动状态时,它仅显示处于活动状态的用户,但随后在我控制原始非活动用户的位置时留下了巨大的空白显示出来。

我有执行该特定 if 语句之前和之后的图片: 这是填充和检查的代码:

    this.AddMultipleUsers.Items.Clear();
    foreach (GetAllLoginUsersResult result in from a in this.db.GetAllLoginUsers(null)
                                              orderby a.FirstName
                                              select a)
    {
        ListItem item = new ListItem();
        string str = Membership.GetUser(result.UserId).ToString();

        item.Text = result.FirstName.Trim() + " " + result.Surname.Trim() + " (" + str + ")";

        if (!result.IsApproved)
        {
            item.Text = item.Text + " (Not Active)";
            //item.Attributes.Add("style", "display:none;"); before
        }
        item.Value = result.UserId.ToString();

        this.AddMultipleUsers.Items.Add(item);
    }

在第一张图片中,复选框列表已完全填充。在链接到代码之前^

在我取消注释这一行之后的第二个 //item.Attributes.Add("style", "display:none;"); 然后 checkboxlist 与第一个图像的大小相同,但是之间有很大的空格 活跃的用户,向下滚动时会随机看到他们。

我想删除复选框列表中的空白项,并使其他有效条目像通常填充的复选框列表一样向上移动

谢谢

【问题讨论】:

  • 你在使用 .net framework 3.5 + 吗?
  • 我正在开发 .net 框架 3.0。但我会尽快检查。
  • 是的,我正在开发 .net framework 3.5。
  • 然后我会发布答案

标签: asp.net visual-studio-2010 checkboxlist listitem visual-c#-express-2010


【解决方案1】:

只需将where 条件添加到您的选择语句:

this.AddMultipleUsers.Items.Clear();
foreach (GetAllLoginUsersResult result in from a in this.db.GetAllLoginUsers(null)
                                          orderby a.FirstName
                                          where a.IsApproved==true
                                          select a)
{
    ListItem item = new ListItem();
    string str = Membership.GetUser(result.UserId).ToString();

    item.Text = result.FirstName.Trim() + " " + result.Surname.Trim() + " (" + str + ")";

    item.Value = result.UserId.ToString();
    this.AddMultipleUsers.Items.Add(item);
}

现在您只在活跃用户之间循环,不再需要隐藏非活跃用户。

【讨论】:

  • 回答你上面的问题:我没有使用这样的列表。在 foreach 循环中,我从数据库中获取值,因为 GetAllLoginUsersResult 是一个类,它的设置与数据库中变量为 @XXX 的存储过程相同。但是我现在就试一试,如果有效,我会告诉你的。非常感谢您的回答。
  • 它会起作用,这是一个反问。您的 sql 语句返回一个实时指针列表,只要数据库连接打开就有效,linq 只会过滤它并返回相关项目:)
  • 好的,谢谢。我认为这是反问句。但是现在,如果结果变量与 foreach 循环结束时的结果变量在同一行中,如何检测(创建时)变量结果。简而言之,它说它在当前上下文中不存在?
  • 嗯,它会起作用,我可能在从内存中编写它时犯了一些语法错误,我会在我拿到电脑时测试它。同时,尝试将其拆分为我帖子开头的语句并循环遍历 mySortedList
  • 好吧,我让它工作了,但是当我运行它作为搜索真时,它给了我一个 System.NullReferenceException: Object reference not set to an instance of an object, on code else where in my class .