我有一个相当恼人和愚蠢的问题。我在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与第一张图片的大小相同,但是之间有很大的空格 活跃的用户,当您向下滚动时,您会随机看到它们。
我想删除复选框列表中的空白项目,并使其他有效条目像正常填充的复选框列表一样向上移动
谢谢
答案 0 :(得分:1)
只需在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);
}
现在您只是在活跃用户中循环,不再需要隐藏不活动的用户。