C# 在数据绑定()后保留选中的项
我正在填充一个数据表,该数据表反过来填充一个复选框列表。我希望在添加项目时选择这些项目。我可以这样做,但是当我添加第2->第n项时,它只保留最后一个复选框。有没有办法通过绑定持久化选中的复选框?以下是我目前的职能:C# 在数据绑定()后保留选中的项,c#,asp.net,data-binding,checkboxlist,C#,Asp.net,Data Binding,Checkboxlist,我正在填充一个数据表,该数据表反过来填充一个复选框列表。我希望在添加项目时选择这些项目。我可以这样做,但是当我添加第2->第n项时,它只保留最后一个复选框。有没有办法通过绑定持久化选中的复选框?以下是我目前的职能: protected void FinalizeAdd_Click(object sender, EventArgs e) { VersionDataTable.AddVersionDataTableRow(Convert.ToInt32(VersionDropDown.Se
protected void FinalizeAdd_Click(object sender, EventArgs e)
{
VersionDataTable.AddVersionDataTableRow(Convert.ToInt32(VersionDropDown.SelectedValue), ProductDropDown.SelectedItem.Text + " " + VersionDropDown.SelectedItem.Text);
ProductCheckList.DataSource = VersionDataTable;
ProductCheckList.DataValueField = VersionDataTable.VersionIDColumn.ToString();
ProductCheckList.DataTextField = VersionDataTable.VersionTextColumn.ToString();
ProductCheckList.DataBind();
ProductCheckList.Items[ProductCheckList.Items.Count - 1].Selected = true;
}
提前感谢您的帮助。再次数据绑定复选框列表之前,您必须先保存所选项目 例如(对不起VB.NET,但我想你会明白我的意思):
谢谢,我将在星期一试一试并报告。好的,但是当您同时使用LINQ获取旧的选定项时,请记住您必须立即执行它(例如,使用上面的
ToList()
),否则它将在数据绑定()之后执行当我分配给oldSelection时,我肯定是做错了什么,intellisense没有拾取“项”。我以前没有使用过LINQ,所以我的知识库可能有问题。@Contristo:您使用的目标框架版本是什么(查看项目中的高级编译器设置)?它至少应该是3.5。是否添加了System.Core.dll
作为参考?好的,我根据您的答案使用了一个变体解决了这个问题,基本上将checkboxlist映射到一个列表,并在数据绑定后运行for循环来重新选择项。再次感谢你的帮助!
Dim oldSelection = (From item As ListItem In ProductCheckList.Items
Where item.Selected).ToList
' databinding '
If oldSelection.Any Then
For Each selectedItem In oldSelection
Dim item = ProductCheckList.Items.FindByValue(selectedItem.Value)
If Not item Is Nothing Then
item.Selected = True
End If
Next
End If