2013-02-19 113 views
0

我想檢查IsAdmin是否爲真,這是一個布爾值。 如果它是真的,那麼在gridview EditItemTemplate中檢查一個複選框。從Linq查詢得到結果

查詢是當gridview處於編輯模式,並且正在編輯的用戶已經是admin。如果checkBox是真的,那麼需要檢查checkBox,因爲如果他們更新了行並且複選框沒有被選中,他們不是長的管理員。

什麼,我的想法是,查詢應該是能夠做到這一點。但不知道如何實現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

此LinQ查詢將返回IEnumerable對象,您可以使用foreach語句對其進行枚舉。

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,所以我寫了這樣。希望它會有幫助。

+0

任何有關投票的評論? – Maris 2013-02-19 10:26:30

0

result將通過包含屬性IsAdmin的對象返回IEnumerable。如果你想要做的有IsAdmin == true做如下各元素的動作:

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

foreach (var r in resultsWithAdminIsTrue) 
{ 
    /* Do action */ 
} 
3

您是否嘗試過在你的GridView模板使用複選框,並設置其Checked屬性綁定到IsAdmin值,這樣的事情:

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

編輯:

對不起,我剛剛看了一下管理員刪除自己的特權意外。如果我在你的引導,我不會讓這件事情發生。管理員無法刪除他們自己的權限。這確保至少有1個管理員存在。