Exemplo n.º 1
0
    protected void rpFruitImgList_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            FruitImg             fruitImg         = e.Item.DataItem as FruitImg;
            HtmlContainerControl divGridStackItem = e.Item.FindControl("divGridStackItem") as HtmlContainerControl;

            //把每个图片的gridstack.js的X/Y坐标值写入前端的HTML属性中
            divGridStackItem.Attributes["data-gs-x"]      = fruitImg.ImgSeqX.ToString();
            divGridStackItem.Attributes["data-gs-y"]      = fruitImg.ImgSeqY.ToString();
            divGridStackItem.Attributes["data-gs-width"]  = GRID_ITEM_WIDTH.ToString();
            divGridStackItem.Attributes["data-gs-height"] = GRID_ITEM_HEIGHT.ToString();
        }
    }
Exemplo n.º 2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        WeChatUser wxUser = Session["WxUser"] as WeChatUser;

        try
        {
            if (!string.IsNullOrEmpty(Request.QueryString["EventID"]))
            {
                int eventID;
                if (int.TryParse(Request.QueryString["EventID"], out eventID))
                {
                    GroupPurchaseEvent groupEvent;
                    groupEvent = GroupPurchaseEvent.FindGroupPurchaseEventByID(eventID);
                    if (groupEvent != null)
                    {
                        //显示团购活动对应的团购信息
                        this.lblGroupName.Text = groupEvent.GroupPurchase.Name;
                        this.lblGroupDesc.Text = groupEvent.GroupPurchase.Description;
                        FruitImg mainImg = groupEvent.GroupPurchase.Product.FruitImgList.Find(img => img.MainImg);
                        if (mainImg != default(FruitImg))
                        {
                            this.imgProdImg.ImageUrl = "images/" + mainImg.ImgName;
                        }
                        else
                        {
                            this.imgProdImg.ImageUrl = "images/" + Config.DefaultImg;
                        }
                        this.lblRequiredNumber.Text = groupEvent.GroupPurchase.RequiredNumber.ToString();
                        this.lblProdPrice.Text      = groupEvent.GroupPurchase.Product.FruitPrice.ToString();
                        this.lblProdPriceUnit.Text  = groupEvent.GroupPurchase.Product.FruitUnit;
                        this.lblGroupPrice.Text     = groupEvent.GroupPurchase.GroupPrice.ToString();
                        this.lblGroupPriceUnit.Text = groupEvent.GroupPurchase.Product.FruitUnit;
                        this.lblEventStardDate.Text = groupEvent.GroupPurchase.StartDate.ToString();
                        this.lblEventEndDate.Text   = groupEvent.GroupPurchase.EndDate.ToString();

                        //查询此团购活动中已支付的成员
                        List <GroupPurchaseEventMember> paidEventMembers = groupEvent.GroupPurchaseEventMembers.FindAll(member => member.IsPaid);

                        //此团购活动还缺的人数
                        int leftNumber;
                        if (groupEvent.GroupPurchaseEventMembers != null)
                        {
                            if (groupEvent.GroupPurchase.RequiredNumber > paidEventMembers.Count)
                            {
                                leftNumber = groupEvent.GroupPurchase.RequiredNumber - paidEventMembers.Count;
                            }
                            else
                            {
                                leftNumber = 0;
                            }
                        }
                        else
                        {
                            leftNumber = groupEvent.GroupPurchase.RequiredNumber;
                        }
                        if (leftNumber > 0)
                        {
                            this.lblLeftNumber.Text = leftNumber.ToString();
                        }
                        else
                        {
                            this.divLeftNumber.Visible = false;
                        }

                        //只显示已支付成功的团购活动成员头像和列表
                        if (paidEventMembers != null)
                        {
                            string strEventMemberList = string.Empty, strEventMemberHeadImg = string.Empty;
                            //团购活动的成员
                            paidEventMembers.ForEach(member =>
                            {
                                strEventMemberHeadImg += string.Format("<img src='{0}'/>", member.GroupMember.HeadImgUrl);
                                strEventMemberList    += string.Format("<div class='col-xs-12 user-portrait {3}'><img src='{0}'/> 【{1}】 {2} {4}{5}</div>", member.GroupMember.HeadImgUrl, member.GroupMember.NickName, member.JoinDate.ToString(), !member.IsPaid ? "text-muted" : string.Empty, (member.GroupMember.OpenID == member.GroupPurchaseEvent.Organizer.OpenID) ? "开团" : "参团", !member.IsPaid ? "(未支付)" : string.Empty);
                            });
                            //尚缺的团购活动成员头像
                            for (int i = 0; i < leftNumber; i++)
                            {
                                strEventMemberHeadImg += "<span class='empty-user-portrait'>?</span>";
                                if ((groupEvent.GroupPurchaseEventMembers.Count + i + 1) % 8 == 0)
                                {
                                    strEventMemberHeadImg += "<br/>";
                                }
                            }
                            this.divGroupEventMemberHeadImg.InnerHtml = strEventMemberHeadImg;
                            this.divGroupEventMember.InnerHtml        = strEventMemberList;
                        }

                        DateTime nowTime = DateTime.Now;
                        if (nowTime >= groupEvent.GroupPurchase.StartDate && nowTime <= groupEvent.GroupPurchase.EndDate)
                        {
                            //如果已支付成员数未达到要求人数,则允许新用户加入团购活动,否则不允许加入
                            if (paidEventMembers.Count < groupEvent.GroupPurchase.RequiredNumber)
                            {
                                this.divShareGroupEvent.Visible = true;
                                this.divJoinGroupEvent.Visible  = true;
                            }
                            else
                            {
                                this.divShareGroupEvent.Visible = false;
                                this.divJoinGroupEvent.Visible  = false;
                                this.divCountDown.InnerHtml     = "团购已经结束,欢迎下次参加!";
                            }
                        }
                        else
                        {
                            this.divShareGroupEvent.Visible = false;
                            this.divJoinGroupEvent.Visible  = false;

                            if (nowTime < groupEvent.GroupPurchase.StartDate)
                            {
                                this.divCountDown.InnerHtml = "团购还未开始,敬请期待!";
                            }
                            else
                            {
                                this.divCountDown.InnerHtml = "团购已经结束,欢迎下次参加!";
                            }
                        }

                        //把团购活动对象序列化为JSON对象,格式化其中的日期属性
                        JsonConvert.DefaultSettings = new Func <JsonSerializerSettings>(() =>
                        {
                            JsonSerializerSettings jSetting = new JsonSerializerSettings();
                            jSetting.DateFormatHandling     = DateFormatHandling.MicrosoftDateFormat;
                            jSetting.DateFormatString       = "yyyy-MM-dd HH:mm:ss";
                            jSetting.ReferenceLoopHandling  = ReferenceLoopHandling.Ignore;
                            return(jSetting);
                        });
                        string strGroupEvent = JsonConvert.SerializeObject(groupEvent);

                        //设置团购商品信息,用于添加入购物车
                        ScriptManager.RegisterStartupScript(Page, this.GetType(), "jsGroupEvent", string.Format("var groupEvent={0};", strGroupEvent), true);
                    }
                    else
                    {
                        throw new Exception("不能找到ID对应的团购活动");
                    }
                }
                else
                {
                    throw new Exception("团购活动ID错误");
                }
            }
            else
            {
                throw new Exception("请指定团购ID");
            }
        }
        catch (Exception ex)
        {
            this.lblMsg.Text          = ex.Message;
            this.lblMsg.Visible       = true;
            this.divContainer.Visible = false;
        }
    }
Exemplo n.º 3
0
    protected void dvFruit_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    {
        try
        {
            //当前的DetailView控件对象和当前记录主键值
            DetailsView dvFruit = sender as DetailsView;
            int         fruitID = int.Parse(dvFruit.DataKey.Value.ToString());

            if (e.NewValues["FruitName"] == null)
            {
                throw new Exception("请输入商品名称");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.NewValues["FruitName"].ToString());
            }

            DropDownList ddlCategory = dvFruit.FindControl("ddlCategoryEdit") as DropDownList;

            if (ddlCategory.SelectedIndex == 0)
            {
                throw new Exception("请选择商品类别");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(ddlCategory.SelectedValue);
            }

            if (e.NewValues["FruitPrice"] == null)
            {
                throw new Exception("请输入商品价格");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.NewValues["FruitPrice"].ToString());
            }

            if (e.NewValues["FruitUnit"] == null)
            {
                throw new Exception("请输入商品单位");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.NewValues["FruitUnit"].ToString());
            }

            if (e.NewValues["FruitDesc"] == null)
            {
                throw new Exception("请输入商品描述");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.NewValues["FruitDesc"].ToString());
            }

            if (e.NewValues["InventoryQty"] == null)
            {
                throw new Exception("请输入商品库存数量");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.NewValues["InventoryQty"].ToString());
            }

            if (e.NewValues["OnSale"] == null)
            {
                throw new Exception("请输入是否上架");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.NewValues["OnSale"].ToString());
            }

            if (e.NewValues["IsSticky"] == null)
            {
                throw new Exception("请输入是否置顶");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.NewValues["IsSticky"].ToString());
            }

            if (e.NewValues["Priority"] == null)
            {
                e.NewValues["Priority"] = 0;
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.NewValues["Priority"].ToString());
            }

            //获取商品类别信息,添加入e.Values集合
            Category category = new Category();
            category.ID = int.Parse(ddlCategory.SelectedValue);
            e.NewValues.Add("Category", category);

            List <FruitImg> fruitImgList = new List <FruitImg>();
            FruitImg        fruitImg;

            //处理原有的图片:在DetailsView嵌套的Repeater中查找所有的子控件,并新建FruitImg对象,添加到集合中
            Repeater rpFruitImgList = dvFruit.FindControl("rpFruitImgList") as Repeater;
            for (int i = 0; i < rpFruitImgList.Items.Count; i++)
            {
                HiddenField hfImgID                = rpFruitImgList.Items[i].FindControl("hfImgID") as HiddenField;
                HiddenField hfImgSeqX              = rpFruitImgList.Items[i].FindControl("hfImgSeqX") as HiddenField;
                HiddenField hfImgSeqY              = rpFruitImgList.Items[i].FindControl("hfImgSeqY") as HiddenField;
                HyperLink   hlOriginalImg          = rpFruitImgList.Items[i].FindControl("hlOriginalImg") as HyperLink;
                RadioButton rbMainImg              = rpFruitImgList.Items[i].FindControl("rbMainImg") as RadioButton;
                CheckBox    cbDetailImg            = rpFruitImgList.Items[i].FindControl("cbDetailImg") as CheckBox;
                TextBox     txtImgDescEditOriginal = rpFruitImgList.Items[i].FindControl("txtImgDescEditOriginal") as TextBox;

                fruitImg = new FruitImg();
                fruitImgList.Add(fruitImg);

                fruitImg.ImgID     = int.Parse(hfImgID.Value);
                fruitImg.ImgName   = hlOriginalImg.Text;
                fruitImg.ImgDesc   = txtImgDescEditOriginal.Text.Trim();
                fruitImg.MainImg   = rbMainImg.Checked;
                fruitImg.DetailImg = cbDetailImg.Checked;

                int imgSeqX, imgSeqY;
                if (!int.TryParse(hfImgSeqX.Value, out imgSeqX))
                {
                    imgSeqX = 0;
                }
                if (!int.TryParse(hfImgSeqY.Value, out imgSeqY))
                {
                    imgSeqY = 0;
                }
                fruitImg.ImgSeqX = imgSeqX;
                fruitImg.ImgSeqY = imgSeqY;
            }
            //把FruitImgList对象附加到DetailView控件的e.NewValues键值对中,留待数据源控件odsFruit调用Fruit对象的update方法一起更新
            e.NewValues.Add("FruitImgList", fruitImgList);

            //处理新上传的图片:把新上传的图片信息先行入库,并保存到服务器磁盘
            HttpFileCollection imgFiles = Request.Files;
            if (imgFiles.Count != 0)
            {
                //存放新上传的图片
                List <FruitImg> newFruitImgList = new List <FruitImg>();
                FruitImg        newFruitImg;

                int gridItemCount = GRID_COL / GRID_ITEM_WIDTH, currentIndex = fruitImgList.Count;

                for (int i = 0; i < imgFiles.Count; i++)
                {
                    HttpPostedFile imgFile = imgFiles[i];
                    if (imgFile.ContentLength == 0)
                    {
                        continue;
                    }
                    string fileName, fileExtension;
                    fileName      = System.IO.Path.GetFileName(imgFile.FileName);
                    fileExtension = System.IO.Path.GetExtension(fileName);
                    //处理图片备注
                    string strImgDesc;
                    if (i == 0)
                    {
                        TextBox txtImgDesc = dvFruit.FindControl("txtImgDescEdit") as TextBox;
                        strImgDesc = txtImgDesc.Text;
                    }
                    else
                    {
                        string txtImgDescID = "dvFruit$txtImgDescEdit" + (i + 1);
                        strImgDesc = Request.Form[txtImgDescID].ToString();
                    }

                    if (Regex.IsMatch(fileExtension, string.Format("({0})", Config.AllowedUploadFileExt), RegexOptions.IgnoreCase))
                    {
                        newFruitImg = new FruitImg();
                        newFruitImgList.Add(newFruitImg);

                        newFruitImg.ImgName   = fileName;
                        newFruitImg.ImgDesc   = strImgDesc;
                        newFruitImg.MainImg   = false;
                        newFruitImg.DetailImg = false;

                        //根据上传图片的序列号计算其gridstack的X/Y坐标值
                        newFruitImg.ImgSeqX = (currentIndex - currentIndex / gridItemCount * gridItemCount) * GRID_ITEM_WIDTH;
                        newFruitImg.ImgSeqY = currentIndex / gridItemCount * GRID_ITEM_HEIGHT;

                        currentIndex++;

                        //保存新图片文件
                        imgFile.SaveAs(Request.MapPath("~/images/") + fileName);
                    }
                }

                if (newFruitImgList.Count > 0)
                {
                    //新图片信息入库
                    Fruit.AddFruitImg(fruitID, newFruitImgList);
                }
            }
        }
        catch (Exception ex)
        {
            this.lblErrMsg.Text = ex.Message;
            e.Cancel            = true;
            this.gvFruitList.DataBind();
        }
    }
Exemplo n.º 4
0
    protected void dvFruit_ItemInserting(object sender, DetailsViewInsertEventArgs e)
    {
        //DetailView会把所有绑定字段的键值放入e.Values集合,非绑定字段则不会自动处理,需要手工处理。
        try
        {
            if (e.Values["FruitName"] == null)
            {
                throw new Exception("请输入商品名称");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.Values["FruitName"].ToString());
            }

            DropDownList ddlCategoryInsert = ((DetailsView)sender).FindControl("ddlCategoryInsert") as DropDownList;
            if (ddlCategoryInsert.SelectedIndex == 0)
            {
                throw new Exception("请选择商品类别");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(ddlCategoryInsert.SelectedValue);
            }

            if (e.Values["FruitPrice"] == null)
            {
                throw new Exception("请输入商品价格");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.Values["FruitPrice"].ToString());
            }

            if (e.Values["FruitUnit"] == null)
            {
                throw new Exception("请输入商品单位");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.Values["FruitUnit"].ToString());
            }

            if (e.Values["FruitDesc"] == null)
            {
                throw new Exception("请输入商品描述");
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.Values["FruitDesc"].ToString());
            }

            //默认上架
            if (e.Values["OnSale"] == null)
            {
                e.Values["OnSale"] = true;
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.Values["OnSale"].ToString());
            }

            //默认不置顶
            if (e.Values["IsSticky"] == null)
            {
                e.Values["IsSticky"] = false;
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.Values["IsSticky"].ToString());
            }

            //默认优先级0
            if (e.Values["Priority"] == null)
            {
                e.Values["Priority"] = 0;
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.Values["Priority"].ToString());
            }

            //获取商品库存数量,默认为不限量
            if (e.Values["InventoryQty"] == null)
            {
                e.Values["InventoryQty"] = -1;
            }
            else
            {
                UtilityHelper.AntiSQLInjection(e.Values["InventoryQty"].ToString());
            }

            //获取商品类别信息,添加入e.Values集合
            Category category = new Category();
            category.ID = int.Parse(ddlCategoryInsert.SelectedValue);
            e.Values.Add("Category", category);

            HttpFileCollection imgFiles = Request.Files;
            if (imgFiles.Count != 0)
            {
                List <FruitImg> fruitImgList = new List <FruitImg>();
                FruitImg        fruitImg;

                //根据gridstack.js网格数、网格项宽度参数计算每行的网格项数量,用于后续计算每个网格项的X/Y坐标值
                int gridItemCount = GRID_COL / GRID_ITEM_WIDTH, currentIndex;

                //遍历文件上传框
                for (int i = 0; i < imgFiles.Count; i++)
                {
                    HttpPostedFile imgFile = imgFiles[i];
                    if (imgFile.ContentLength == 0)
                    {
                        continue;
                    }
                    string fileName, fileExtension;
                    fileName      = System.IO.Path.GetFileName(imgFile.FileName);
                    fileExtension = System.IO.Path.GetExtension(fileName);
                    //处理图片备注
                    string strImgDesc;
                    if (i == 0)
                    {
                        TextBox txtImgDesc = ((DetailsView)sender).FindControl("txtImgDescInsert") as TextBox;
                        strImgDesc = txtImgDesc.Text;
                    }
                    else
                    {
                        string txtImgDescID = "dvFruit$txtImgDescInsert" + (i + 1);
                        strImgDesc = Request.Form[txtImgDescID].ToString();
                    }

                    if (Regex.IsMatch(fileExtension, string.Format("({0})", Config.AllowedUploadFileExt), RegexOptions.IgnoreCase))
                    {
                        fruitImg = new FruitImg();
                        fruitImgList.Add(fruitImg);

                        fruitImg.ImgName   = fileName;
                        fruitImg.ImgDesc   = strImgDesc;
                        fruitImg.DetailImg = false;

                        //根据上传图片的序列号计算其gridstack的X/Y坐标值
                        currentIndex     = (fruitImgList.Count - 1);
                        fruitImg.ImgSeqX = (currentIndex - currentIndex / gridItemCount * gridItemCount) * GRID_ITEM_WIDTH;
                        fruitImg.ImgSeqY = currentIndex / gridItemCount * GRID_ITEM_HEIGHT;

                        //保存新图片文件
                        imgFile.SaveAs(Request.MapPath("~/images/") + fileName);
                    }
                }

                if (fruitImgList.Count > 0)
                {
                    //默认新上传的第一个是主图
                    fruitImgList[0].MainImg = true;

                    //把需要上传的图片信息加入DetailView控件的e.Values集合中,留待数据源控件odsFruit调用Fruit对象的insert方法一起插入
                    e.Values.Add("FruitImgList", fruitImgList);
                }
            }
            else
            {
                throw new Exception("请选择商品图片");
            }
        }
        catch (Exception ex)
        {
            this.lblErrMsg.Text = ex.Message;
            e.Cancel            = true;
            this.gvFruitList.DataBind();
        }
    }