Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > ASP.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2022, 14:43   #1
rita616
Пользователь
 
Регистрация: 19.12.2019
Сообщений: 69
По умолчанию Не сохраняются результаты выполнения функций после завершения выполнения метода.

Доброго времени суток. Подскажите, пожалуйста, хотя бы примерно что не так Долго уже борюсь с этим. Вот код модели. И получается у меня есть две кнопки "Сформировать" и "Сохранить". На сформировать получается выполняется GetData1 и GetData2(выполняются хранимые процедуры, которые возвращают результат), а по кнопке сохранить выполняется SaveDefaultTable, но сохраняет все пустое, потому что Data и Data1 чистятся. Не подскажите как считать данные из результата хранимых процедур? Заранее благодарю.
Код:
namespace VMP.Models
{
    public class DispWomenViewModel : IViewModel
    {
        public IList<Disp_Women1_Result> Data { get; set; }
        public IList<Disp_Women2_Result> Data1 { get; set; }

        public DispWomenViewModel()
        {
            Data = new List<Disp_Women1_Result>();
            Data1 = new List<Disp_Women2_Result>();
        }

        private UnitOfWork uow = UnitOfWork.getInstance();

        public void GetData1(int monthrep, int yearrep)
        {
            Data = uow.repositoryMEE.GetDispWomen1(monthrep, yearrep);
        }

        public void GetData2(int monthrep, int yearrep)
        {
            Data1 = uow.repositoryMEE.GetDispWomen2(monthrep, yearrep);
        }

        public void SaveDefaultTable(Stream OutputStream, int monthrep, int yearrep)
        {
            string[] months = { "январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь" };

                    xlSheet.Cell(7, 2).Value = Data;
                    for (int i = 0; i < Data.Count; i++)
                    {
                        for (int j = 0; j < 10; j++)
                        {
                            xlSheet.Cell(7, j + 2).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                            xlSheet.Cell(7, j + 2).Style.Alignment.WrapText = true;
                        }
                    }

                    xlSheet.Cell(8, 2).Value = Data1;
                    for (int i = 0; i < Data1.Count; i++)
                    {
                        for (int j = 0; j < 10; j++)
                        {
                            xlSheet.Cell(8, j + 2).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                            xlSheet.Cell(8, j + 2).Style.Alignment.WrapText = true;
                        }
                    }

                    for (int j = 0; j < 11; j++)
                    {
                        xlSheet.Cell(6, j + 1).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                        xlSheet.Cell(6, j + 6).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center);
                        xlSheet.Cell(6, j + 6).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Center);
                    }

                    for (int j = 0; j < 6; j++)
                    {
                        xlSheet.Cell(7, j + 6).Value = "X";
                        xlSheet.Cell(7, j + 6).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center);
                        xlSheet.Cell(7, j + 6).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Center);
                    }

                    workbook.SaveAs(OutputStream);
                }
            //}
        }

        public System.IO.MemoryStream Get_xlsx_mem(int monthrep, int yearrep)
        {
            var mem = new System.IO.MemoryStream();
            SaveDefaultTable(mem, monthrep, yearrep);

            return mem;
        }
    }

}
Вот код контроллера
Код:
 [HttpPost]
        [Authorize(Roles = "role2")]
        public ActionResult DispWomen(string submitButton, int monthrep, int yearrep, IViewModel model)
        {           
            string[] months = { "январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь" };
            string str;

            if (monthrep != 1)

            {
                str = @"Охват женщин и девочек профосмотрами и диспансеризацией, январь - " + months[monthrep - 1] + " " + yearrep + " г";
            }
            else
            {
                str = @"Охват женщин и девочек профосмотрами и диспансеризацией, январь " + yearrep + " г";
            }
            switch (submitButton)
            {
                case "Сформировать":
                    model.GetData1(monthrep, yearrep);
                    model.GetData2(monthrep, yearrep);
                    return GetFetch();
                case "Сохранить":
                    var mem = model.Get_xlsx_mem(monthrep, yearrep);
                    mem.Position = 0;

                    return File(mem, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", str + ".xlsx");
                default:
                    return View();
            }
        }
rita616 вне форума Ответить с цитированием
Старый 02.12.2022, 14:58   #2
rita616
Пользователь
 
Регистрация: 19.12.2019
Сообщений: 69
По умолчанию

Через DataTable пробовала тоже самое не сохраняет значения DataTable
Код:
namespace VMP.Models
{
    public class DispWomenViewModel
    {

        private readonly string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

        public DataTable GetDisp_Women1(int monthrep, int yearrep)
        {
            DataTable Data = new DataTable();
            using (SqlConnection sqlConnection = new SqlConnection(ConnectionString))
            {
                SqlCommand sqlCommand = new SqlCommand();
                SqlParameter sqlParameter = new SqlParameter();

                sqlConnection.Open();
                SqlTransaction sqlTransaction = sqlConnection.BeginTransaction(IsolationLevel.ReadUncommitted);
                SqlCommand sqlCommand2 = sqlCommand;
                sqlCommand2.CommandType = CommandType.StoredProcedure;
                sqlCommand2.CommandText = "gme.Disp_Women1";
                sqlCommand2.CommandTimeout = 240000;
                sqlCommand2.Connection = sqlConnection;
                sqlCommand2.Transaction = sqlTransaction;

                sqlParameter = sqlCommand2.Parameters.AddWithValue("@year", yearrep);
                sqlParameter.SqlDbType = SqlDbType.Int;
                sqlParameter.Direction = ParameterDirection.Input;
                sqlParameter = sqlCommand2.Parameters.AddWithValue("@month", monthrep);
                sqlParameter.SqlDbType = SqlDbType.Int;
                sqlParameter.Direction = ParameterDirection.Input;

                sqlTransaction.Commit();

                Data.Load(sqlCommand.ExecuteReader(CommandBehavior.SingleResult));

                sqlTransaction.Dispose();
                sqlCommand.Dispose();
                sqlConnection.Close();
            }

            return Data;
        }

        public DataTable GetDisp_Women2(int monthrep, int yearrep)
        {
            DataTable Data1 = new DataTable();
            using (SqlConnection sqlConnection = new SqlConnection(ConnectionString))
            {
                SqlCommand sqlCommand = new SqlCommand();
                SqlParameter sqlParameter = new SqlParameter();

                sqlConnection.Open();
                SqlTransaction sqlTransaction = sqlConnection.BeginTransaction(IsolationLevel.ReadUncommitted);
                SqlCommand sqlCommand2 = sqlCommand;
                sqlCommand2.CommandType = CommandType.StoredProcedure;
                sqlCommand2.CommandText = "gme.Disp_Women2";
                sqlCommand2.CommandTimeout = 240000;
                sqlCommand2.Connection = sqlConnection;
                sqlCommand2.Transaction = sqlTransaction;

                sqlParameter = sqlCommand2.Parameters.AddWithValue("@year", yearrep);
                sqlParameter.SqlDbType = SqlDbType.Int;
                sqlParameter.Direction = ParameterDirection.Input;
                sqlParameter = sqlCommand2.Parameters.AddWithValue("@month", monthrep);
                sqlParameter.SqlDbType = SqlDbType.Int;
                sqlParameter.Direction = ParameterDirection.Input;

                sqlTransaction.Commit();

                Data1.Load(sqlCommand.ExecuteReader(CommandBehavior.SingleResult));

                sqlTransaction.Dispose();
                sqlCommand.Dispose();
                sqlConnection.Close();
            }

            return Data1;
        }

        public void GetData1(int monthrep, int yearrep)
        {
            System.Data.DataTable Data = GetDisp_Women1(monthrep, yearrep);
        }

        public void GetData2(int monthrep, int yearrep)
        {
            System.Data.DataTable Data1 = GetDisp_Women2(monthrep, yearrep);
        }

        public void SaveDefaultTable(Stream OutputStream, int monthrep, int yearrep, DataTable Data, DataTable Data1)
        {
            string[] months = { "январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь" };

            using (XLWorkbook workbook = new XLWorkbook(XLEventTracking.Disabled))
                {
                    var xlSheet = workbook.Worksheets.Add("Лист1");

                    xlSheet.Cell(7, 2).Value = Data;
                    for (int i = 0; i < Data.Rows.Count; i++)
                    {
                        for (int j = 0; j < 10; j++)
                        {
                            xlSheet.Cell(7, j + 2).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                            xlSheet.Cell(7, j + 2).Style.Alignment.WrapText = true;
                        }
                    }

                    xlSheet.Cell(8, 2).Value = Data1;
                    for (int i = 0; i < Data1.Columns.Count; i++)
                    {
                        for (int j = 0; j < 10; j++)
                        {
                            xlSheet.Cell(8, j + 2).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                            xlSheet.Cell(8, j + 2).Style.Alignment.WrapText = true;
                        }
                    }

                    for (int j = 0; j < 11; j++)
                    {
                        xlSheet.Cell(6, j + 1).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                        xlSheet.Cell(6, j + 6).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center);
                        xlSheet.Cell(6, j + 6).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Center);
                    }

                    for (int j = 0; j < 6; j++)
                    {
                        xlSheet.Cell(7, j + 6).Value = "X";
                        xlSheet.Cell(7, j + 6).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center);
                        xlSheet.Cell(7, j + 6).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Center);
                    }

                    workbook.SaveAs(OutputStream);
                }
            //}
        }

        public System.IO.MemoryStream Get_xlsx_mem(int monthrep, int yearrep, DataTable Data, DataTable Data1)
        {
            var mem = new System.IO.MemoryStream();
            SaveDefaultTable(mem, monthrep, yearrep, Data, Data1);

            return mem;
        }
    }

}
rita616 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
компонент TWebBrowser - Как мне программно прочитать текст, который в нем появится после выполнения метода Navigate? Booster_1 Работа с сетью в Delphi 1 18.09.2019 15:35
Как задать время для выполнения метода? Jerry_Letehen Java Мобильная разработка (Android) 0 18.11.2016 20:12
выполнения функций JS slikNET JavaScript, Ajax 0 19.02.2013 12:00
Записать результаты выполнения кода в файл Encorsar Помощь студентам 1 06.06.2011 23:03
Использование метода free после завершения потока Denager Общие вопросы Delphi 4 29.08.2008 10:13