2011-01-24 25 views
0

我有一個檢查列表框,從中提取檢查的項目值並將其保存到數據庫。現在,當我回到表單時,我只有值[id]作爲列表。現在我想從這個int列表中顯示這些選定的值。下面的代碼的LINQ/LAMBDA表達式

我想我很清楚你。

[更新]

您好,我解決我的問題,使用下面的代碼。但我想知道是否還有比這更優化的解決方案。作爲其迭代unneccesarily

private void ProcessRequest() 
     { 
      if (Session["DeniedReason"] != null) 
      { 
       List<int> deniedList = (List<int>)Session["DeniedReason"]; 
       if(deniedList!=null) 
       { 
        if(deniedList.Count>0) 
        { 
         foreach (int deniedValue in deniedList) 
         { 
          foreach (ListItem item in cblDeniedList.Items) 
          { 
           if (string.Compare(item.Value,deniedValue.ToString())==0) 
           { 
            item.Selected = true; 
           } 
          } 
         } 

        } 
       } 
      } 
     } 

LINQ/Lambda表達式如果any..that將是巨大的。

回答

2
List<int> deniedList = (List<int>)Session["DeniedReason"]; 
foreach (ListItem li in cblDeniedList.Items) 
{ 
    li.Selected = deniedList.Contains(Convert.ToInt32(li.Value)); 
} 
+0

奇怪......我張貼了這個答案的一個不同的問題。幕後有些奇怪的事情發生。 – lukiffer 2011-01-24 16:48:43

1
<asp:checkboxlist id="CheckBoxList1" runat="server" 
     DataTextField="interest" DataValueField="1" /> 
Use DatavalueFild property(i think it's your id) 
ListItem myListItem = CheckBoxList1.Items.FindByValue("sports"); 
currentCheckBox.Selected = true; 

或使用CheckBoxList1.Items.FindByText方法 希望這有助於:-) 它的回答對你nonupdated問題