ASP.NET 之 CheckBoxList在实际项目中的应用——高级查询、数据库读出默认选中

1.CheckBoxList里面的项,存入数据库中的一个字段(cbxValues)(多个时用逗号隔开)

  string MemberObject = string.Empty;
            for (int i = 0; i < cbxMemberObject.Items.Count; i++)  //循环遍历页面中的CheckBoxListidcbxMemberObject
            {
                if (this.cbxMemberObject.Items[i].Selected)//判断CheckBoxList当中有没有选中
                {
                      MemberObject = MemberObject + this.cbxMemberObject.Items[i].Value.ToString()  + ",";

//如果选中,就把cbxMemberObjectID号赋值给MemberObject 后面加上逗号用来分开多个选项
                }
            }
            if (MemberObject.Length > 1)  //判断MemberObject里是否有值。
            {
                MemberObject = MemberObject.Substring(0, MemberObject.Length - 1);  //把最后一位(逗号)截取掉

                cm.cCouObject = MemberObject;         //把截取后的值赋值给cm.cCouObject(三层中的Model层)最后存入数据库中。

            }

 

2.首先给大家看下效果图片:

选择

这是从数据中读出默认选中后的效果。

下面是主要实现的代码:

 

DataRowView dr = c.selectvalue(id).DefaultView[0];//首先建立一个自定义视图

  string cbx= dr["cbxValues"].ToString();           //在数据库中找到cbxAll字段后赋值给cbx
            string[] coj = cbx.Split(',');               //把数据库中的数据用Split分离出逗号存放到coj数组中

            for (int i = 0; i < coj.Length; i++)    //循环遍历上面的数组
            {
           
                for (int j = 0; j < cbxMemberObject.Items.Count; j++)//循环遍历在页面中CheckBoxList里的所有项
                {
                    if (this.cbxMemberObject.Items[j].Value == coj[i])//判断i遍历后的idcbx当中的值是否有相同
                    {
                        this.cbxMemberObject.Items[j].Selected = true; //相同就选中
                    }
                }

            } 

--------------------------------------------------------------------------------------------------------------------------------------

 3.高级查询

 首先先也给大家看下效果图

 

 高级查询

 

首先也需要上面12步操作

最后当点击查询的时候,从数据库读出。来拼接字符串。

如下代码:

 string ValueName = "";
 string TypeName = "";

 for (int i = 0; i < cbxValue.Items.Count; i++)
            {

                if (this.cbxValue.Items[i].Selected)
                {
                    ValueName = ValueName + "'" + this.cbxValue.Items[i].Text.ToString() + "'" + ",";
                }

            }
            if (ValueName.Length > 1)
            {

                ValueName = ValueName.Substring(0, ValueName.Length - 1);
                cm.CValueName = ValueName;

            }
            else
            {
                cm.CValueName = "''";
            }

          for (int i = 0; i < cbxType.Items.Count; i++)
            {
                if (this.cbxType.Items[i].Selected)
                {
                    //  cm.CTypeName = this.cbxType.Items[i].Text.ToString();
                    TypeName = TypeName + "'" + this.cbxType.Items[i].Text.ToString() + "'" + ",";

                }

            }
            if (TypeName.Length > 1)
            {
                TypeName = TypeName.Substring(0, TypeName.Length - 1);
                cm.CTypeName = TypeName;
            }
            else
            {
                cm.CTypeName = "''";
            }
 

string sql = "select * from t_Customer as c where";

if (ValueName != "")
            {
                sql = sql + string.Format(" cValueName in ({0})", ValueName) + " and";
            }

if (TypeName != "")
            {
                sql = sql + string.Format(" cTypeName in ({0})", TypeName) + " and";
            }

 

 

这里需要两个注意的地方,一个是当用没有点击cbxlist的时候,就默认查询全部,这样上面的最后就还有个where,当用户点击后在sql最后还有个and,所以最后都必须要把她们截取掉。

 //判断最后的字符串是不是and是的话,把and字符串截取掉

 

     string result=sql.Substring(sql.Length - 3); //获取sql字符串最后3
            if (result.Trim() == "and")
            {
                result = sql.Substring(0, sql.Length - 3);
            }

         //当用户什么都没有点击的时候定义获取sql语句最后6位字符串where
            s = sql.Substring(sql.Length - 6);

            //判断最后的字符串是不是where是的话,把where字符串截取掉
            if (s.Trim() == "where")
            {
                //把截取后的SQL语句赋值给S select * from t_Customer
                s = sql.Substring(0, sql.Length - 6);
            }

------------------------------------------------------------------------------------------------------

本人是初学者,上面都是本人在实际项目中遇到的问题,最后弄了很久才解决了,所以发出来给大家看看。希望遇到此类的问题,可以参考了。如上面的还有些疑问的,或者有更好的提议。给我留言或者加我的群,大家相互交流!(群里高手挺多的喔!) 76512040 88465849

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值