zoukankan      html  css  js  c++  java
  • 使用linq2sql 的DetailView 如何保存多对多关系

    比如有用户和角色这2个对象是多对多关系,而linq2sql是不支持多对多的,这个时候就要自己手工写代码了.

    代码
    public partial class frmUserEdit : System.Web.UI.Page
        {
            
    protected void Page_Load(object sender, EventArgs e)
            {
                
    if (!IsPostBack)
                {
                    
    if (Request["AddNew"== "1")
                    {
                        DetailsView1.DefaultMode 
    = DetailsViewMode.Insert;
                        DetailsView1.AutoGenerateInsertButton 
    = true;
                    }
                    
    else
                    {
                        DetailsView1.DefaultMode 
    = DetailsViewMode.Edit;
                        
                    }
                    BindRoleList();
                }
            }

            
    private void BindRoleList()
            {
                CheckBoxList cblRole 
    = DetailsView1.FindControl("cblRole"as CheckBoxList;
                cblRole.DataTextField 
    = "RoleName";
                cblRole.DataValueField 
    = "RoleID";
                cblRole.DataSourceID 
    = RolesDataSource.ID;
                cblRole.DataBind();
            }
            
    private List<long> GetSelectedRoles()
            {
                CheckBoxList cblRole 
    = DetailsView1.FindControl("cblRole"as CheckBoxList;
                List
    <long> result = new List<long>();
                
    foreach (ListItem item in cblRole.Items)
                {
                    
    if (item.Selected)
                        result.Add(
    long.Parse(item.Value));
                }
                
    return result;
            }

            
    //roles data bound,check many-to-many to check/uncheck selected 
            protected void cblRole_DataBound(object sender, EventArgs e)
            {
                User usr 
    = DetailsView1.DataItem as User;
                
    if (null == usr) return;

                CheckBoxList cblRole 
    = sender as CheckBoxList;
                
    foreach (Role r in usr.RoleList)
                {
                    
    foreach (ListItem item in cblRole.Items)
                    {
                        
    if (r.RoleID.ToString() == item.Value)
                            item.Selected 
    = true;
                    }
                }
            }

            }
            
    private void ShowMsg(string ExceptionMsg)
            {
                lblErr.Text 
    = ExceptionMsg;
            }


            
    protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
            {
                User usr 
    = new User();
                usr.UserID 
    = long.Parse(Request["ID"]);
                usr.UserName 
    = e.NewValues["UserName"].ToString();
                UserService.Save(usr, GetSelectedRoles(), 
    false);
                e.Cancel 
    = true;
                ShowMsg(
    "Save Successfully");

            }

        }


  • 相关阅读:
    为什么数据库连接很消耗资源 转
    在Eclipse中编写servlet时出现"The import javax.servlet cannot be resolved" 问题解决办法
    multipart/form-data post 方法提交表单,后台获取不到数据
    java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法
    Eclipse/myEclipse 代码提示/自动提示/自动完成设置(转)
    PL/SQL破解方法(不需要注册码)
    Java
    tomcat开发环境配置
    文件操作权限
    Java版office文档在线预览
  • 原文地址:https://www.cnblogs.com/zitjubiz/p/linq2sql_detailview_manytomany.html
Copyright © 2011-2022 走看看