我正在尝试检查IsAdmin是否为真,这是一个bool。 如果为true,则在gridview EditItemTemplate中选中一个复选框。
查询是当gridview处于编辑模式并且正在编辑的用户已经是admin时。需要检查checkBox是否为true,因为如果他们更新了行并且没有选中复选框,则不再管理员。
我在想的是查询应该能够做到这一点。但不确定如何实现IsAdmin == true。
private void LoadGridEdit()
{
using (dbDataContext _db = new dbDataContext())
{
var result = from u in _db.tbl_Users
where u.Deleted == false
select new
{
u.UserId,
u.UserName,
u.Email,
u.IsAdmin,
u.tbl_ServiceArea.ServiceArea,
};
if ()
{
//???? or foreach?
}
// Bind Here
}
}
我看了一下并尝试了不同的选择,但我不确定。
答案 0 :(得分:3)
您是否尝试在GridView模板中使用CheckBox,并将其Checked属性设置为绑定到IsAdmin值,如下所示:
<asp:CheckBox ID="chbIsAdmin" runat="server" Checked='<%# Bind("IsAdmin") %>' />
编辑:
抱歉,我刚看到管理员意外删除了自己的权限。如果我在你的引导,我不会让这件事发生。管理员无法删除自己的权限。这确保至少有1个管理员存在。
答案 1 :(得分:0)
此LinQ查询将返回IEnumerable
对象,您可以使用foreach
语句枚举它。
答案 2 :(得分:0)
类似的东西:
var result = _db.tbl_Users.Where(u=> u.Deleted == false).Select(e=> new
{
u.UserId,
u.UserName,
u.Email,
u.IsAdmin,
u.tbl_ServiceArea.ServiceArea,
}.ToList();
foreach(var res in result)
{
if(res.IsAdmin)
{
// Do SOmething
}
}
抱歉,但我不喜欢类似sql的linq,所以我这样写。希望它会有所帮助。
答案 3 :(得分:0)
result
将通过包含属性IEnumerable
的对象返回IsAdmin
。如果您想对IsAdmin == true
执行的每个元素执行操作,请执行以下操作:
var resultsWithAdminIsTrue = from r in result
where r.IsAdmin
select r;
foreach (var r in resultsWithAdminIsTrue)
{
/* Do action */
}