C# 在数据绑定()后保留选中的项

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

我正在填充一个数据表,该数据表反过来填充一个复选框列表。我希望在添加项目时选择这些项目。我可以这样做,但是当我添加第2->第n项时,它只保留最后一个复选框。有没有办法通过绑定持久化选中的复选框?以下是我目前的职能:

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