效果图

展示商品分类效果图

页面展示HTML

<% List<DealMvc.Reception.Controllers.GoodsController.ZDYshuxing> ZDYshuxingList = (List<DealMvc.Reception.Controllers.GoodsController.ZDYshuxing>)ViewData["ZDYList"]; %>
<%foreach (DealMvc.Reception.Controllers.GoodsController.ZDYshuxing _ZDYshuxing in ZDYshuxingList)
{
    ArrayList arrzdy = new ArrayList();
%>
<li class="zdyDiv">
    <h5 class="name"><%=_ZDYshuxing.name%>:</h5>
    <div class="content">
    <a cname="<%=_ZDYshuxing.name%>" class='CP <%=_ZDYshuxing.select ? "" : "a_now"%>' cval="">不限</a>
    <%foreach (DealMvc.Reception.Controllers.GoodsController.ZDYshuxing _ZDYshuxing2 in _ZDYshuxing.ZDYshuxingList)
        {
            if (_ZDYshuxing2.select)
            { 
                arrzdy.Add(_ZDYshuxing.name + "|" + _ZDYshuxing2.name); 
            }
    %>
    <a cname="<%=_ZDYshuxing.name%>" class='CP <%=_ZDYshuxing2.select ? "a_now" : ""%>' cval="<%=_ZDYshuxing2.name%>"><%=_ZDYshuxing2.name%></a>
    <%} %>
    <input type="hidden" name="GoodsGg" value="<%=arrzdy.Count>0?arrzdy.JArrayListToString(",", false):""%>"/>
    </div>
</li>
<%} %>

JS代码

$(function () {
    //自定
    $(".zdyDiv a").each(function (i, v) {
        $(v).click(function () {
            var val = $(this).attr("cval");
            
            //获取原来的值
            var v_this_old = $(this).parent().find("input[type='hidden']").val();
            //获取当前的文本
            var v_danqianval = $.trim($(this).text());
            if (v_this_old == "" && v_danqianval != "不限") {
                $(this).parent().find("input[type='hidden']").val($(this).attr("cname") + "|" + v_danqianval);
            }
            else {
                if (v_danqianval == "不限") {
                    $(this).parent().find("input[type='hidden']").val(""); //"" or i_string 全部的自定义属性,空也是全部
                } else {
                    var str = v_this_old.split(",");
                    var arrlist = new Array();
                    var v_bool = true;
                    for (var i_str = 0; i_str < str.length; i_str++) {
                        if ($(this).attr("cname") + "|" + v_danqianval == str[i_str]) {
                            v_bool = false; //如果再次点击,已存在值的话,false表示不再追加值
                        } else {
                            arrlist.push(str[i_str]);
                        }
                    }

                    if (v_bool)
                        $(this).parent().find("input[type='hidden']").val(v_this_old + "," + $(this).attr("cname") + "|" + v_danqianval); //继续加值
                    else {
                        //arrlist.length == 0("" or i_string)
                        $(this).parent().find("input[type='hidden']").val(arrlist.length == 0 ? "" : arrlist.join(",").toString());

                    }
                }
            }
            
            $(".FrmShopGoodsListSort").submit();
        });
    });
});

代码SQL查询区域

//第一
string[] GoodsGg,//规格
//处理传值
ArrayList ayyGgList = new ArrayList();
if (GoodsGg != null && GoodsGg.Length > 0)
{
    int ii = 0;//zdyval=a1|b1&zdyval=a1|b2 zdyval=a1|b1,a1|b2,a1|b1,a1|b2
    foreach (string _item in GoodsGg)
    {
        ii++;
        string c_item = _item.ToString2Trim();
        if (string.IsNullOrEmpty(c_item))
            continue;
        string[] str = c_item.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
        if (str.Length == 0)
            continue;

        switch (str.Length)
        {
            case 1:
                if (ayyGgList.Contains(str[0].ToString2Trim()))
                    continue;
                ayyGgList.Add(str[0]);
                break;
            default:
                foreach (string itemv in str)
                {
                    if (string.IsNullOrEmpty(itemv.ToString2Trim()))
                        continue;
                    ii = ii + 1;
                    if (ayyGgList.Contains(itemv.ToString2Trim()))
                        continue;
                    ayyGgList.Add(itemv);
                }
                break;
        }
    }
}
//string swhere = where;
//【修改】
if (ayyGgList.Count > 0)
{
    //B[Type=string] - 属性选择集合值
    where += new Class1().s(ayyGgList.JArrayListToString(), "B");
}

处理前台选中函数

#region 自定义属性
if (!BrandEntityCk.IsNull)
{
    List ZDYList = GetZDYlistByID(BrandEntityCk.Get类型规格List().List);
    for (int i = 0; i < ZDYList.Count; i++)
    {
        for (int u = 0; u < ZDYList[i].ZDYshuxingList.Count; u++)
        {
            string val = ZDYList[i].ZDYshuxingList[u].name;
            if (GoodsGg != null && GoodsGg.Length > 0)
                foreach (string item in GoodsGg)
                {
                    ArrayList listarry = new ArrayList();
                    string[] str = item.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string itemv in str)
                    {
                        if (string.IsNullOrEmpty(itemv.ToString2Trim()))
                            continue;
                        listarry.Add(itemv);
                    }
                    if (!(listarry.Contains((ZDYList[i].name + "|" + val))))
                        continue;

                    ZDYList[i].ZDYshuxingList[u].select = true;
                    ZDYList[i].select = true;

                }
        }
    }
    ViewData["ZDYList"] = ZDYList;
}
#endregion

辅助方法

//【存储方式】商品字段[B]如:陕西|凉皮,成都|麻辣串,陕西|冰峰
//获取页面的属性值 例如:Customs_2012317141628346652722_4
for (int i = 0; i < _NVC.AllKeys.Length; i++)
{
    string key = _NVC.AllKeys[i].ToString2();
    string value = _NVC[key].ToString2();
    if (key.IndexOf("Customs_") == 0)
    {
        string[] key_s = key.Split('_');
        if (key_s.Length != 3) continue;

        if (string.IsNullOrEmpty(value))
            continue;
        XShop_ProductTypesCustoms _mptc = XShop_ProductTypesCustoms.GetModel(key_s[2].ToInt32());
        if (_mptc.IsNull)
            continue;

        if (_mptc.PTC_UseCate == "供网站填写_会员查看")
            nes.Add(_mptc.PTC_Title.ToString2Trim() + "|" + value.ToString2Trim());

        Model.XShop_ProductAttributeParameter _XShop_ProductAttributeParameter = new Model.XShop_ProductAttributeParameter();
        _XShop_ProductAttributeParameter.PAP_UniqueID = Common.Globals.CreateNewUniqueID();
        _XShop_ProductAttributeParameter.Product_UniqueID = m_GoodsLibrary.UniqueID;
        _XShop_ProductAttributeParameter.PAP_Name = _mptc.PTC_Title;
        _XShop_ProductAttributeParameter.PAP_Value = value;
        _XShop_ProductAttributeParameter.PAP_Sort = 0;
        _XShop_ProductAttributeParameter.A = _mptc.PTC_UniqueID;
        _XShop_ProductAttributeParameter.Add(_STE);
    }
}
m_GoodsLibrary.B = nes.Count > 0 ? nes.JArrayListToString(",", true) : "";//属性选择集合值
/// 图片分类同or不同and【修改】
/// 
/// 根据图片分类获取其自定义属性
/// 
/// 
/// 
public List GetZDYlistByID(List GoodsGgList)
{
    List _PropertyList = new List();

    foreach (XShop_ProductTypesCustoms _item in GoodsGgList)
    {
        ZDYshuxing _ZDYshuxing = new ZDYshuxing();
        _ZDYshuxing.id = _item.id ?? 0;
        _ZDYshuxing.name = _item.PTC_Title.ToString2Trim();
        foreach (string _CustomProperties2 in _item.PTC_Value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries))
        {
            ZDYshuxing _ZDYshuxing2 = new ZDYshuxing();
            _ZDYshuxing2.id = 0;
            _ZDYshuxing2.name = _CustomProperties2.ToString2Trim();
            _ZDYshuxing.ZDYshuxingList.Add(_ZDYshuxing2);
        }
        _PropertyList.Add(_ZDYshuxing);
    }
    return _PropertyList;
}

public class ZDYshuxing
{
    public int id { get; set; }
    public string name { get; set; }
    public bool select = false;
    public List ZDYshuxingList = new List();
}
private class Class1
{
    public class splitmodel
    {
        public string N { get; set; }//陕西
        public string V { get; set; }//凉皮
    }
    public class Vmodel
    {
        public string Vb { get; set; }
    }
    public class NvModels
    {
        public string N { get; set; }

        private List _VmodelList = new List();

        public List VmodelList
        {
            set { _VmodelList = value; }
            get { return _VmodelList; }
        }
    }

    public string s(string szshus, string tableName)
    {
        List splitmodelList = new List();

        string[] szshu = szshus.Split(',');//"陕西|凉皮,成都|麻辣串,陕西|冰峰".Split(',');
        foreach (string item in szshu)
        {
            string[] szshuw = item.Split('|');
            if (szshuw.Length != 2)//如果不是“陕西|凉皮”格式就跳出
                continue;
            splitmodel sa = splitmodelList.Find(t =>
                t.N == szshuw[0].ToString2() &&
                t.V == szshuw[1].ToString2());//判断是否存在“陕西|凉皮”
            if (sa != null)//如果存在就跳出。不再次添加
                continue;
            splitmodelList.Add(new splitmodel()
            {
                N = szshuw[0].ToString2(),
                V = szshuw[1].ToString2()
            });//否则,添加
        }
        List NvModelsList = new List();
        foreach (splitmodel item in splitmodelList)
        {
            NvModels _NvModels = NvModelsList.Find(t =>
                t.N == item.N);//判断”陕西“是否存在,目的在于判断是不是一个属性
            if (_NvModels != null)
            {
                _NvModels.VmodelList.Add(new Vmodel() { Vb = item.V });//存在就添加二级,”西安“
                continue;
            }
            NvModels b_NvModels = new NvModels();
            b_NvModels.N = item.N;
            b_NvModels.VmodelList.Add(new Vmodel() { Vb = item.V });//如果不存在,就依次添加”陕西“和”西安“

            NvModelsList.Add(b_NvModels);
            //.VmodelList.Add(new Vmodel() { Vb = item.V });
        }
        StringBuilder sb = new StringBuilder();
        int i = 0;
        //AND ( 陕西|凉皮 OR  陕西|凉皮 ) AND 成都|麻辣串
        foreach (NvModels itemb in NvModelsList)
        {
            sb.Append(" AND ");//组合sql
            if (itemb.VmodelList.Count > 1)
            {
                sb.Append(" ( ");
            }
            //ADN 
            // 陕西
            //  凉皮 OR
            //  冰峰

            //itemb.N 陕西  
            int ic = 1;
            foreach (Vmodel item in itemb.VmodelList)
            {
                sb.AppendFormat(" {2} like '%{0}|{1}%' ", new object[]{
                    itemb.N,item.Vb,tableName
                });

                //凉皮 //冰峰
                if (ic < itemb.VmodelList.Count)// 2
                {
                    sb.Append(" OR ");
                }

                ic++;
            }
            if (itemb.VmodelList.Count > 1)
            {
                sb.Append(" ) ");
            }
            i++;

        }
        return sb.ToString();
    }

    //P

    //// and (c) and (c) --> and ((c) or (c))
    //List nelwist = new List();
    //foreach (MemberGroup item in "陕西|凉皮,成都|麻辣串,陕西|冰峰".Split(','))
    //{
    //    //Member A 不能重复
    //    Member _Member = nelwist.Find(t => t.A == item.A);
    //    if (!_Member.IsNull)
    //    {
    //        _Member.Blist.add(item.B)

    //            continue;
    //    }

    //    _Member.Blist.add(item.B)
    //    _Member.Add();
    //    //
    //}
    //AND ( 陕西|凉皮 OR  陕西|凉皮 ) AND 成都|麻辣串

    //ADN 
    // 陕西
    // 凉皮 OR
    // 冰峰
    //AND
    // 成都
    // 麻辣串
}

Copyright © 2013-2021 版权所有 蜀ICP备14018279号