Model.Users中的UserRoleId,UserStateId为外键。这两个外键在ListView 的 EditItemTemplate模板中,使用DropDownList呈显数据。
当修改User时,在ObjectDataSource 的Updating事件中,采用下列方法将DropDownList中的外键值传递给model。
protected void ODS_User_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
//获取修改后的UserRole对象
DropDownList userRoleId = ListView1.EditItem.FindControl("DDR_UserRoleId") as DropDownList;
int roleId = int.Parse(userRoleId.SelectedValue);
UserRoles r = new UserRolesBLL().Get(roleId);
//获取修改后的UserStates对象
DropDownList UserStateId = ListView1.EditItem.FindControl("DDL_UserStateIdTextBox") as DropDownList;
int stateId = int.Parse(UserStateId.SelectedValue);
UserStates s = new UserStatesBLL().Get(stateId);
Users u = e.InputParameters["model"] as Users;
u.UserRoleId = r;
u.UserStateId = s;
}
备注:若采用e.InputParameters["model"]=u;的方法,会产生如下异常:
OrderedDictionary 是只读的,无法修改。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NotSupportedException: OrderedDictionary 是只读的,无法修改。
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240813180353098-2140851696.jpg)