0

我正在尝试检查 IsAdmin 是否为 true,这是一个布尔值。如果为真,则在 gridview EditItemTemplate 中选中一个复选框。

查询是当gridview处于编辑模式并且正在编辑的用户已经是管理员时。如果这是真的,则需要检查复选框,因为如果他们更新行并且未选中复选框,则它们不再是管理员。

我在想的是查询应该能够做到这一点。但不确定如何实现 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
}
}

我已经查看并尝试了不同的选项,但我不确定。

4

4 回答 4

3

您是否尝试过在 GridView 模板中使用 CheckBox,并将其 Checked 属性设置为绑定到 IsAdmin 值,如下所示:

<asp:CheckBox ID="chbIsAdmin" runat="server" Checked='<%# Bind("IsAdmin") %>' />

编辑:

对不起,我刚刚读到管理员不小心删除了他们自己的权限。如果我在你的引导下,我不会让这件事发生。管理员不能删除他们自己的权限。这确保至少有 1 个管理员存在。

于 2013-02-19T10:26:04.523 回答
0

resultIEnumerable通过包含属性的对象返回一个IsAdmin。如果你想对每个元素IsAdmin == true执行如下操作:

var resultsWithAdminIsTrue = from r in result
                             where r.IsAdmin
                             select r;

foreach (var r in resultsWithAdminIsTrue)
{
    /* Do action */
}
于 2013-02-19T10:26:01.663 回答
0

这个 LinQ 查询将返回一个IEnumerable对象,您可以用foreach语句枚举它。

于 2013-02-19T10:20:21.827 回答
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,所以我就这样写了。希望它会有所帮助。

于 2013-02-19T10:21:53.283 回答