Asp.net

ASP.NET CheckBoxList 數據綁定問題

  • May 18, 2009

是否可以對 ASP.NET CheckBoxList 進行數據綁定,以使數據中的字元串值成為複選框的標籤,並且布爾值選中/取消選中該框?

在我的 asp.net 網路表單上,我有一個這樣的 CheckBoxList:

<asp:CheckBoxList runat="server" ID="chkListRoles" DataTextField="UserName" DataValueField="InRole" />

在後面的程式碼中,我有以下程式碼:

var usersInRole = new List<UserInRole> 
{ 
 new UserInRole { UserName = "Frank", InRole = false},
 new UserInRole{UserName = "Linda", InRole = true},
 new UserInRole{UserName = "James", InRole = true},
};

chkListRoles.DataSource = usersInRole;
chkListRoles.DataBind();

我有點希望在 InRole = true 時選中復選框。我也試過 InRole = “Checked”。結果是一樣的。我似乎找不到 DataBind 的方法並自動選中/取消選中復選框。

目前,我通過為 DataBound 事件中的相應項目設置 selected = true 來解決問題。似乎有一個更清潔的解決方案超出了我的掌握。

謝謝

**編輯:**沒有辦法通過標記來做到這一點。DataValueField 不能確定複選框項是否被選中。它檢索或儲存要在回發中使用的值。DataValueField在 CheckBoxLists、RadioButtonLists、ListControl 等中很常見。

正如您已經發現的那樣,這是預先選擇複選框的唯一方法。

chkListRoles.DataSource = usersInRole;
chkListRoles.DataBind();

foreach(ListItem item in chkListRoles.Items)
item.Selected = usersInRole.Find(u => u.UserName == item.Text).InRole;

引用自:https://stackoverflow.com/questions/879434