在以下按钮事件中,我将项目添加到另一个列表中的列表中。
private void btnAdd_Click(object sender, EventArgs e)
{
if (lstPermissions.SelectedItem != null)
if (!lstGivenPermissions.Items.Contains(lstPermissions.SelectedItem))
{
lstGivenPermissions.Items.Add(lstPermissions.SelectedItem);
}
}
当项目在lstPermissions
中进行了硬编码并且lstGivenPermissions
' s datasource
未设置时,它很好。但是在将数据绑定到lstGivenPermissions
之后,当我尝试执行此方法时,我得到了此异常。
设置DataSource属性时无法修改项目集合。
我使用此属性将数据绑定到lstGivenPermissions
public List<string> GivenPermission
{
get { return lstGivenPermissions.Items.Cast<string>().ToList(); }
set { lstGivenPermissions.DataSource = value; }
}
我可以理解数据绑定导致了这个异常。但我的要求是,我想从数据库加载lstPermissions
的所有权限和所选用户对lstGivenPermission
的权限。然后,我应该能够在lstGivenPermissions
之间添加和删除项目。你能告诉我怎么做吗?
答案 0 :(得分:2)
您不应该使用属性绑定到列表控件...属性应该只保存/加载值,如下所示:
private List<string> _givenPermission;
public List<string> GivenPermission
{
get { return _givenPermission; }
set { _givenPermission = value;}
}
如果你必须绑定,请尝试这样做:
private List<string> _givenPermission;
public List<string> GivenPermission
{
get { return _givenPermission; }
set { _givenPermission = value; lstGivenPermissions.DataSource = value; }
}