Ejemplo n.º 1
0
        protected string GetImageUrl(SparePartImage spi)
        {
            using (System.IO.MemoryStream stm = new System.IO.MemoryStream(spi.ImageBody.ToArray()))
            {
                using (System.Drawing.Image img = System.Drawing.Image.FromStream(stm))
                {
                    // получаем размер загруженного фото
                    ImageHeight = img.Height;
                }
            }

            return UrlManager.GetSparePartDefectImageUrl(spi.Manufacturer + ',' + spi.PartNumber + ',' + spi.SupplierID + ',' + spi.ImageNumber);
        }
        protected void _btnSave_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                using (var dc = new DCFactory<StoreDataContext>(false))
                {
                    TextBox txtImageNumber = new TextBox();
                    TextBox txtDescription = new TextBox();
                    FileUpload fuImage = new FileUpload();
                    // Выполняем в транзакции
                    dc.DataContext.Connection.Open();
                    dc.DataContext.Transaction = dc.DataContext.Connection.BeginTransaction();
                    try
                    {
                        for (int i = 1; i <= 5; i++)
                        {
                            SetControls(i, out txtImageNumber, out txtDescription, out fuImage);
                            if (fuImage.HasFile)
                            {
                                SparePartImage spiSource = dc.DataContext.SparePartImages.SingleOrDefault(item => item.Manufacturer == _txtManufacturer.Text.Trim() &&
                                                                                item.PartNumber == _txtPartNumber.Text.Trim() &&
                                                                                item.SupplierID == Convert.ToInt32(_ddlSupplierID.SelectedValue) &&
                                                                                item.ImageNumber == Convert.ToInt32(txtImageNumber.Text));
                                if (spiSource != null) // т.е. пытаемся обновить существующую запись
                                {
                                    // сначала удаляем старую, т.к. Primary Key на полях не позволит их обновить, только пересоздать
                                    dc.DataContext.SparePartImages.DeleteOnSubmit(spiSource);
                                    dc.DataContext.SubmitChanges();
                                }
                                // создаем новую запись
                                SparePartImage spi = new SparePartImage();
                                spi.Manufacturer = _txtManufacturer.Text.Trim();
                                spi.PartNumber = _txtPartNumber.Text.Trim();
                                spi.SupplierID = Convert.ToInt32(_ddlSupplierID.SelectedValue);
                                spi.ImageNumber = Convert.ToInt32(txtImageNumber.Text);
                                spi.Description = txtDescription.Text;
                                spi.ImageBody = fuImage.FileBytes;

                                dc.DataContext.SparePartImages.InsertOnSubmit(spi);
                            }
                        }

                        dc.DataContext.SubmitChanges();
                        dc.DataContext.Transaction.Commit();

                        _lblInfo.Text = "Фотографии успешно сохранены.";
                        _lblInfo.Style.Add(HtmlTextWriterStyle.Color, "Green");
                    }
                    catch (Exception ex)
                    {
                        dc.DataContext.Transaction.Rollback();
                        _lblInfo.Text = "Ошибка при сохранении фотографий!";
                        _lblInfo.Style.Add(HtmlTextWriterStyle.Color, "Red");
                    }
                }

                // перенаправляем на список всех фотографий деталий
                HttpContext.Current.Response.Redirect("ListSparePartImagesMgmt.aspx");
            }
        }