首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • CheckBoxList的保存和获取问题 [已结贴,结贴人:asbeforelong]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 03:48:06 楼主
    CheckBoxList有多项选择,
    比如一个会员的“爱好”有“打球”、“旅游”、“购物”...
    当会员有多项选择的时候,怎么把遍历CheckBoxList的结果保存到数据库的会员表“爱好”字段中呢?
    并且在会员更改个人资料的时候,需要从会员表“爱好”字段中获取对应的值把它关联到CheckBoxList控件。

    目前是采用逗号分隔选项将会员爱好信息构成一个“1,2,7,9,13”的解决办法(似乎有点违反1NF了)
    大家有没有什么更好的解决方案?
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 08:40:261楼 得分:20
    保存:
            CheckBoxList m_chlbusiness = (CheckBoxList)(dvdetail.FindControl("chlbusiness_edit"));
            string m_business = "";
            foreach (ListItem m_item in m_chlbusiness.Items)
            {
                if (m_item.Selected)
                {
                    m_business += m_item.Value;
                    m_business += ",";
                }
            }
            if (m_business.Length > 0)
            {
                m_business = "," + m_business;
            }
            e.NewValues["business"] = m_business;

    读取:
            DataRowView m_datarowview = (DataRowView)dvdetail.DataItem;
            string m_business = m_datarowview["business"].ToString();
            CheckBoxList m_chlbusiness = (CheckBoxList)(dvdetail.FindControl("chlbusiness_edit"));
            foreach (ListItem m_item in m_chlbusiness.Items)
            {
                if (m_business.IndexOf("," + m_item.Value + ",") != -1)
                {
                    m_item.Selected = true;
                }
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:53:552楼 得分:0
    引用 1 楼 Novelty 的回复:
    保存:
            CheckBoxList m_chlbusiness = (CheckBoxList)(dvdetail.FindControl("chlbusiness_edit"));
            string m_business = "";
            foreach (ListItem m_item in m_chlbusiness.Items)
            {
                if (m_item.Selected)
                {
                    m_business += m_item.Value;
                    m_business += ",";
                }
            }
            if (m_business.Le…


    这个办法已经考虑过了,只是想知道还有没有什么更好的解决办法?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 12:48:073楼 得分:0
    1.如果选项不多,可以改数据库结构,把每个“爱好”存为一条记录或一个字段;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mqcan
    • 等级:
    发表于:2008-05-12 12:58:374楼 得分:20
    1.先遍历选中的checkbox,然后用逗号连接起来存入数据库.
    2.显示的时候,将从数据库中的爱好用split开,然后进行绑定!
    eg:
    C# code
    //已经保存到数据库了string hobby="篮球,足球,手球"; string[] hobbies=hobby.split(","); //然后直接绑定 checkboxlist.datsoure=hobbies; checkboxlist.DataBind();
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 13:48:445楼 得分:10
    2种方案 其实具体的问题,还需要具体对待,只是看,你需要处理的环境。
    1 字符串截取

    2 建立从表
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved