コード例 #1
0
        private void CompleteHandler(object sender, EventArgs e)
        {
            var btn = (SimpleButton) sender;
            if (btn.Name == "buttonCancel")
            {
                OnCompleted(new FormulaPeekArgs() { Write = false });
                return;
            }
            var args = new FormulaPeekArgs
            {
                Write = this.IsAvailable
            };

            if (IsAvailable)
            {
                foreach (int index in this.gridViewMunicipality.GetSelectedRows())
                {
                    var munit = (municipality) this.gridViewMunicipality.GetRow(index);
                    var data = munit.municipality_form_data
                        .FirstOrDefault(t => t.form.form_id == _regularForm.form_id && t.send_date.Year == _year);
                    if (data == null) 
                        continue;
                    args.FormDataList.Add(data);
                }
                args.FormulaBytes = _formula.file_data;
            }
            OnCompleted(args);
        }
コード例 #2
0
 protected virtual void OnCompleted(FormulaPeekArgs e)
 {
     var handler = Completed;
     if (handler != null) handler(this, e);
 }
コード例 #3
0
        private async void formulaPeekControl_Completed(object sender, FormulaPeekArgs e)
        {
            this.windowsUIButtonPanelActions.HidePeekForm();
            if (!e.Write) return;

            try
            {
                this.spreadsheetControl.BeginUpdate();
                var messages = new List<string>();
                using (new MarqueeProgressDialog(this.ParentForm, description: "Обработка данных"))
                {
                    await Task.Run(() =>
                    {
                        using (var spreadsheet = new SpreadsheetControl {AllowDrop = false})
                        {
                            using (var ms = new MemoryStream(e.FormulaBytes))
                            {
                                var formulas = FormulaExpressionParser.ParseStream(ms); //TODO: rewrite
                                var formDatas = e.FormDataList;
                                for (var i = 0; i < formDatas.Count; i++)
                                {
                                    var formData = formDatas[i];
                                    var formBytes = formData.file.contents;
                                    var format = formData.document_format.IsOpenXml()
                                        ? DocumentFormat.OpenXml
                                        : DocumentFormat.Xls;
                                    spreadsheet.LoadDocument(formBytes, format);
                                    
                                    foreach (var formula in formulas)
                                    {
                                        formula.Source = spreadsheet.Document;
                                        formula.Target = this.spreadsheetControl.Document;
                                        try
                                        {
                                            if (i == 0)
                                                formula.WriteToTarget();
                                            else
                                                formula.AppendToTarget();
                                        }
                                        catch
                                        {
                                            messages.AddRange(formula.ErrorMessages.Where(errorMessage => !messages.Contains(errorMessage)));
                                        }
                                    }
                                }
                                
                            }
                        }
                    });
                }

                if (messages.Count > 0)
                {
                    var countToTake = 10;
                    var takenMessages = messages.Take(countToTake).ToList();
                    if (takenMessages.Count > countToTake)
                        takenMessages.Add("...");
                    var message = string.Join("\n", takenMessages);
                    this.ShowFlyoutMessageBox("Ошибка заполнения", message);
                }
            }
            catch (Exception ex)
            {
                this.ShowFlyoutMessageBox("Ошибка", ex.Message, FlyoutCommand.OK);
            }
            finally
            {
                this.spreadsheetControl.EndUpdate();
            }

        }