Asp.net 复选框列表中的空白项(删除空白项)

Asp.net 复选框列表中的空白项(删除空白项),asp.net,visual-studio-2010,checkboxlist,listitem,visual-c#-express-2010,Asp.net,Visual Studio 2010,Checkboxlist,Listitem,Visual C# Express 2010,我有一个相当恼人和愚蠢的问题。我在asp页面上有一个复选框列表,我从数据库填充该列表。我能够填充它,问题在于,当我做一个特定的检查,检查用户是否处于活动状态时,它只显示处于活动状态的用户,但在我的控制中留下了巨大的空白,无法显示原始的非活动用户 我有实施该特定if语句前后的照片: 以下是填充和检查的代码: this.AddMultipleUsers.Items.Clear(); foreach (GetAllLoginUsersResult result in from a in

我有一个相当恼人和愚蠢的问题。我在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;”); 然后,复选框列表与第一个图像的大小相同,但它们之间有较大的空格 当您向下滚动时,会随机看到处于活动状态的用户

我想删除复选框列表中的空白项,并使其他有效条目像正常填充的复选框列表

一样向上移动。
谢谢

只需在select语句中添加一个
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);
}

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

您正在使用.net framework 3.5+?我正在使用.net framework 3.0。但是我会很快检查。是的,我正在使用.NETFramework3.5。然后我会发布一个答案来回答你上面的问题:我没有使用这样的列表。在foreach循环中,我从数据库中获取值,因为getAllLoginUserResult是一个类,其设置与数据库中的存储过程相同,其中变量为@XXX。但我现在会尝试一下,如果有效,我会让你知道。非常感谢你的回答。它会起作用的,这是一个反驳性的问题。您的sql语句返回一个实时指针列表,只要数据库连接打开就有效,linq只需对其进行筛选并返回相关项:)好的,谢谢。我也认为这是一个反问句。但是现在,如果结果变量与foreach循环末尾的结果变量在同一行中,那么如何检测(创建时)变量result。简而言之,它说它在当前的上下文中不存在?它会工作的,我可能在从内存编写它时犯了一些语法错误,当我到pc时,我会对它进行测试。同时,尝试将它分离为语句,就像在我的帖子开始时一样,并通过mySortedListAlright循环我让它工作了,但当我将其作为搜索true运行时,它会给我一个System.NullReferenceException:对象引用未设置为对象的实例,位于类中其他位置的代码上。