private void DataBind(DataTable dt, QuickSearchFetchXml qsfx)
        {
            string stackPanelName = string.Format("StackPanel_{0}", qsfx.EntityLogicalName);
            // Create a DataSet and add the table to it
            DataSet ds = new DataSet("EntityDataSet");

            ds.Tables.Add(dt);

            BindableDataGrid.BindableDataGrid myBindableDG = new BindableDataGrid.BindableDataGrid();

            var stackPanel = SearchResultGridPanel.Children.Where(a => a.GetType() == typeof(StackPanel) && ((StackPanel)a).Name == stackPanelName).FirstOrDefault <UIElement>();

            if (stackPanel != null)
            {
                var dataGrid = ((StackPanel)stackPanel).Children.Where(a => a.GetType() == typeof(BindableDataGrid.BindableDataGrid) && ((BindableDataGrid.BindableDataGrid)a).Name == qsfx.DataGridName);
                if (dataGrid != null && dataGrid.Count() == 1)
                {
                    myBindableDG            = (BindableDataGrid.BindableDataGrid)dataGrid.FirstOrDefault <UIElement>();
                    myBindableDG.DataSource = ds;
                    myBindableDG.DataMember = "EntityDataTable";
                    myBindableDG.DataBind();
                }
            }
            else
            {
                //Show DataGrid Only when there are records for given search
                if (dt.Rows.Count > 0)
                {
                    StackPanel entityStackPanel = new StackPanel();
                    entityStackPanel.Name = string.Format("StackPanel_{0}", qsfx.EntityLogicalName);

                    #region Entity DataGrid
                    myBindableDG.Name            = qsfx.DataGridName;
                    myBindableDG.CRMSourceEntity = qsfx.EntityLogicalName;

                    if (ServerBaseUrl.EndsWith("/"))
                    {
                        myBindableDG.ServerBaseUrl = ServerBaseUrl.Substring(0, ServerBaseUrl.Length - 1);
                    }
                    else
                    {
                        myBindableDG.ServerBaseUrl = ServerBaseUrl;
                    }

                    myBindableDG.AutoGenerateColumns = false;
                    myBindableDG.DataSource          = ds;
                    myBindableDG.DataMember          = "EntityDataTable";
                    myBindableDG.DataBind();
                    #endregion

                    #region Label
                    System.Windows.Controls.Label labelEntityName = new System.Windows.Controls.Label();
                    labelEntityName.Content             = XDocument.Parse(qsfx.FormattedFetchXml).Root.Element("entity").Attribute("displayName").Value;
                    labelEntityName.Height              = 20;
                    labelEntityName.MinWidth            = 1000;
                    labelEntityName.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                    labelEntityName.FontWeight          = FontWeights.Bold;
                    #endregion

                    #region

                    Image img = new Image();
                    System.Windows.Media.Imaging.BitmapImage imgEntityImg = new System.Windows.Media.Imaging.BitmapImage(new Uri("http://zlcrmweb52/_imgs/ico_16_1.gif"));
                    img.Source             = imgEntityImg;
                    labelEntityName.Height = 16;
                    labelEntityName.Width  = 16;
                    #endregion

                    #region Navigation Grid

                    Grid pagerGrid = new Grid();
                    pagerGrid.Name = string.Format("PageGrid_{0}", qsfx.EntityLogicalName);
                    pagerGrid.ColumnDefinitions.Add(new ColumnDefinition()
                    {
                        Width = new GridLength(5, GridUnitType.Star)
                    });
                    pagerGrid.ColumnDefinitions.Add(new ColumnDefinition()
                    {
                        Width = new GridLength(5, GridUnitType.Star)
                    });
                    pagerGrid.HorizontalAlignment = System.Windows.HorizontalAlignment.Right;

                    #region Next Button
                    Button nextButton = new Button();
                    nextButton.Content             = "Next";
                    nextButton.Name                = string.Format("NextButton_{0}", qsfx.EntityLogicalName);
                    nextButton.HorizontalAlignment = System.Windows.HorizontalAlignment.Right;
                    nextButton.Tag    = qsfx.EntityLogicalName;
                    nextButton.Click += new RoutedEventHandler(nextButton_Click);

                    pagerGrid.Children.Add(nextButton);
                    Grid.SetColumn(nextButton, 1);
                    //if (qsfx.HasMoreRecords)
                    //{

                    //    nextButton.IsEnabled = true;
                    //}
                    //else
                    //{
                    //    nextButton.IsEnabled = false;
                    //}
                    #endregion

                    #region Prev Button
                    Button prevButton = new Button();
                    prevButton.Content             = "Prev";
                    prevButton.Name                = string.Format("PrevButton_{0}", qsfx.EntityLogicalName);
                    prevButton.HorizontalAlignment = System.Windows.HorizontalAlignment.Right;
                    prevButton.Tag    = qsfx.EntityLogicalName;
                    prevButton.Click += new RoutedEventHandler(prevButton_Click);

                    //if (qsfx.PageNumber == 1)
                    //{
                    //    prevButton.IsEnabled = false;
                    //}
                    //else
                    //{
                    //    prevButton.IsEnabled = true;
                    //}
                    pagerGrid.Children.Add(prevButton);
                    Grid.SetColumn(prevButton, 0);
                    #endregion

                    #endregion

                    entityStackPanel.Children.Add(new Line());
                    entityStackPanel.Children.Add(labelEntityName);
                    entityStackPanel.Children.Add(img);
                    entityStackPanel.Children.Add(myBindableDG);
                    entityStackPanel.Children.Add(pagerGrid);

                    SearchResultGridPanel.Children.Add(entityStackPanel);
                }
            }

            ControlNavigationButtons(qsfx);
        }
        private void loadCompleted(object sender, EventArgs e)
        {
            //wait till fully loaded
            if (ctx.IsLoading) return;

            var operation = sender as LoadOperation<RGReport>;
            var rgReport = operation.Entities.FirstOrDefault();
            reportNumberToDownload = rgReport.ReportNo;

            var reportTable = new DataTable("Report");
            var cols = reportTable.Columns;
            var rows = reportTable.Rows;

            var headerRow = new DataRow();
            rows.Add(headerRow);

            var columnNames = new List<string>()
               {"SlNo","Location","Thickness","SFD","IQI Designation","IQI Sensitivity",
                "Density", "FilmSize","Observations","Classifactions","Remarks", "ReportNo",
                "ReportDate", "Film","RTNO","FPNO","HEATNO","DateOfTest","LeadScreenFront","LeadScreenBack",
                "Viewing","Source","SourceSize","Coverage","ProcedureReference","AcceptanceAsper",
                "TotalNoOfFilms"
               };

            foreach (var en in ctx.Energies)
            {
                columnNames.Add(en.Name + " Area");
            }

            columnNames.Add("Ir192_Co60 Strength");

            foreach (var columnName in columnNames)
            {
                AddTextColumn(reportTable, columnName, columnName);
            }

            foreach (var columnName in columnNames)
            {
                headerRow[columnName] = columnName;
            }

            var totalFilmCount = rgReport.RGReportRows.Sum(p => p.FilmCount);

            foreach (RGReportRow row in rgReport.RGReportRows)
            {
                var dataRow = new DataRow();
                dataRow["SlNo"] = rows.Count;
                dataRow["Location"] = row.LocationAndSegment ?? string.Empty;
                dataRow["Thickness"] = row.ThicknessRange;
                dataRow["SFD"] = row.SFD;
                dataRow["IQI Designation"] = row.Designation ?? string.Empty;
                dataRow["IQI Sensitivity"] = row.Sensitivity ?? string.Empty;
                dataRow["Density"] = row.Density ?? string.Empty;
                if (!IsFilmSizeInCms)
                    dataRow["FilmSize"] = row.FilmSizeString ?? string.Empty;
                else
                    dataRow["FilmSize"] = row.FilmSizeStringInCms ?? string.Empty;
                dataRow["Observations"] = row.Findings ?? string.Empty;
                dataRow["Classifactions"] = row.Classifications ?? string.Empty;
                dataRow["Remarks"] = row.RemarkText ?? string.Empty;
                dataRow["ReportNo"] = rgReport.ReportNo ?? string.Empty;
                dataRow["ReportDate"] = rgReport.ReportDate.ToShortDateString();
                dataRow["Film"] = rgReport.Film ?? string.Empty;
                dataRow["RTNO"] = rgReport.RTNo ?? string.Empty;
                dataRow["FPNO"] = rgReport.FixedPattern != null ? rgReport.FixedPattern.FPNo : string.Empty;
                dataRow["HEATNO"] = rgReport.HeatNo ?? string.Empty;
                dataRow["DateOfTest"] = rgReport.DateOfTest.ToShortDateString();
                dataRow["LeadScreenFront"] = rgReport.LeadScreen;
                dataRow["LeadScreenBack"] = rgReport.LeadScreenBack;
                dataRow["Viewing"] = rgReport.Viewing ?? string.Empty;
                dataRow["Source"] = rgReport.Source ?? string.Empty;
                dataRow["SourceSize"] = rgReport.SourceSize ?? string.Empty;
                dataRow["Coverage"] = rgReport.Coverage != null ? rgReport.Coverage.CoverageName : string.Empty;
                dataRow["ProcedureReference"] = rgReport.ProcedureRef ?? string.Empty;
                dataRow["AcceptanceAsper"] = rgReport.AcceptanceAsPer ?? string.Empty;
                dataRow["TotalNoOfFilms"] = row.FilmCount;    //totalFilmCount;
                dataRow["Ir192_Co60 Strength"] = rgReport.Strength ?? string.Empty;

                foreach (var en in ctx.Energies)
                {
                    if (!IsFilmSizeInCms)
                    {
                        dataRow[en.Name + " Area"] = rgReport.RGReportRows
                            .Where(p => p.EnergyID == en.ID &&
                                //  p.RemarkText != "RETAKE" &&
                                        p.SlNo == rows.Count)
                            .Sum(p => p.FilmSize.Area * p.FilmCount);
                    }
                    else
                    {
                        dataRow[en.Name + " Area"] = rgReport.RGReportRows
                           .Where(p => p.EnergyID == en.ID &&
                               //  p.RemarkText != "RETAKE" &&
                                       p.SlNo == rows.Count)
                           .Sum(p => p.FilmSize.AreaInCms * p.FilmCount);
                    }
                }

                rows.Add(dataRow);
            }

            var ds = new DataSet("ReportDataSet");
            ds.Tables.Add(reportTable);

            reportGrid = new BindableDataGrid.BindableDataGrid();
            reportGrid.DataSource = ds;
            reportGrid.DataMember = "Report";
            reportGrid.DataBind();

            busyIndicator.IsBusy = false;

            myPopup.IsOpen = true;
        }
Example #3
0
        private void loadCompleted(object sender, EventArgs e)
        {
            var report = ((LoadOperation <FixedPatternPerformanceRow>)sender).Entities;

            //Can't directly bind the report to the grid due to variable no of columns. Using a custom datagrid bindable
            //to a datatable instead


            reportTable = new DataTable("Report");

            var cols = reportTable.Columns;
            var rows = reportTable.Rows;

            var locationRow = new DataRow();

            rows.Add(locationRow);

            var segmentRow = new DataRow();

            rows.Add(segmentRow);

            AddTextColumn(reportTable, "FPNo", "FP No");
            AddTextColumn(reportTable, "RTNo", "RT No");
            AddTextColumn(reportTable, "ReportNo", "Report No");
            AddTextColumn(reportTable, "Coverage", "Coverage");
            AddTextColumn(reportTable, "HeatNo", "Heat No");
            AddTextColumn(reportTable, "Date", "Date");

            segmentRow["FPNo"]     = "FPNo";
            segmentRow["ReportNo"] = "ReportNo";
            segmentRow["RTNo"]     = "RTNo";
            segmentRow["HeatNo"]   = "HeatNo";
            segmentRow["Coverage"] = "Coverage";
            segmentRow["Date"]     = "Date";

            string prevRTNo = "";

            //get the columns in order first
            string prevLocn = "";

            foreach (var locseg in report
                     .SelectMany(p => p.Locations)
                     .SelectMany(l => l.Segments.Select(s => new Tuple <string, string>(l.Location, s.Segment)))
                     .Distinct()
                     .OrderBy(q => q.Item1).ThenBy(q => q.Item2))
            {
                string header  = String.Concat(locseg.Item1, "-", locseg.Item2);
                string colname = "col" + header.Replace("-", "");
                if (cols.FirstOrDefault(p => p.Caption == header) == null)
                {
                    AddTextColumn(reportTable, colname, header);
                    locationRow[colname] = locseg.Item1 == prevLocn ? "" : locseg.Item1; //do not get location get repeated
                    prevLocn             = locseg.Item1;
                    segmentRow[colname]  = locseg.Item2;
                }
            }

            lstExcelDataRows = new List <DataRow> {
                locationRow, segmentRow
            };

            foreach (var rt in report)
            {
                var row          = new DataRow();
                var rowWithColor = new DataRow();

                row["FPNo"]     = rowWithColor["FPNo"] = rt.FPNo;                            //txtFPNo.Text; //won't change throughout the report
                row["RTNo"]     = rowWithColor["RTNo"] = prevRTNo == rt.RTNo ? "" : rt.RTNo; //prevent same RT No from repeating
                row["ReportNo"] = rowWithColor["ReportNo"] = rt.ReportNo;
                row["Coverage"] = rowWithColor["Coverage"] = rt.Coverage;
                row["HeatNo"]   = rowWithColor["HeatNo"] = rt.HeatNo;
                prevRTNo        = rt.RTNo;
                row["Date"]     = rowWithColor["Date"] = rt.Date.ToString("dd/MM/yyyy");

                prevLocn = "";
                foreach (var loc in rt.Locations)
                {
                    foreach (var seg in loc.Segments)
                    {
                        string header  = String.Concat(loc.Location, "-", seg.Segment);
                        string colname = "col" + header.Replace("-", "");
                        //no need to show NSD - not any more
                        row[colname] = seg.Observations.ToUpper();
                        string colourCode;
                        colourCode = RemarksColorCodeDic.ContainsKey(seg.RemarkText)
                                         ? RemarksColorCodeDic[seg.RemarkText]
                                         : string.Empty;
                        rowWithColor[colname] = seg.Observations.ToUpper() + colourCode;
                    }
                }
                rows.Add(row);
                lstExcelDataRows.Add(rowWithColor);
            }

            DataSet ds = new DataSet("ReportDataSet");

            ds.Tables.Add(reportTable);

            excelTable = new DataTable("ExcelReport");
            foreach (DataColumn column in reportTable.Columns)
            {
                excelTable.Columns.Add(column);
            }

            foreach (var row in lstExcelDataRows)
            {
                excelTable.Rows.Add(row);
            }

            reportGrid.DataSource = ds;
            reportGrid.DataMember = "Report";
            reportGrid.DataBind();

            var excelDs = new DataSet("ExcelDataSet");

            excelDs.Tables.Add(excelTable);
            reportGrid1 = new BindableDataGrid.BindableDataGrid {
                DataSource = excelDs, DataMember = "ExcelReport"
            };
            reportGrid1.DataBind();

            busyIndicator.IsBusy = false;
        }
        private void loadCompleted(object sender, EventArgs e)
        {
            //wait till fully loaded
            if (ctx.IsLoading)
            {
                return;
            }

            var operation = sender as LoadOperation <RGReport>;
            var rgReport  = operation.Entities.FirstOrDefault();

            reportNumberToDownload = rgReport.ReportNo;

            var reportTable = new DataTable("Report");
            var cols        = reportTable.Columns;
            var rows        = reportTable.Rows;

            var headerRow = new DataRow();

            rows.Add(headerRow);

            var columnNames = new List <string>()
            {
                "SlNo", "Location", "Thickness", "SFD", "IQI Designation", "IQI Sensitivity",
                "Density", "FilmSize", "Observations", "Classifactions", "Remarks", "ReportNo",
                "ReportDate", "Film", "RTNO", "FPNO", "HEATNO", "DateOfTest", "LeadScreenFrontBack",
                "Viewing", "Source", "SourceSize", "Coverage", "ProcedureReference", "AcceptanceAsper",
                "TotalNoOfFilms"
            };

            foreach (var en in ctx.Energies)
            {
                columnNames.Add(en.Name + " Area");
            }

            columnNames.Add("Ir192_Co60 Strength");

            foreach (var columnName in columnNames)
            {
                AddTextColumn(reportTable, columnName, columnName);
            }

            foreach (var columnName in columnNames)
            {
                headerRow[columnName] = columnName;
            }


            var totalFilmCount = rgReport.RGReportRows.Sum(p => p.FilmCount);

            foreach (RGReportRow row in rgReport.RGReportRows)
            {
                var dataRow = new DataRow();
                dataRow["SlNo"]                = rows.Count;
                dataRow["Location"]            = row.LocationAndSegment ?? string.Empty;
                dataRow["Thickness"]           = row.Thickness;
                dataRow["SFD"]                 = row.SFD;
                dataRow["IQI Designation"]     = row.Designation ?? string.Empty;
                dataRow["IQI Sensitivity"]     = row.Sensitivity ?? string.Empty;
                dataRow["Density"]             = row.Density ?? string.Empty;
                dataRow["FilmSize"]            = row.FilmSizeString ?? string.Empty;
                dataRow["Observations"]        = row.Findings ?? string.Empty;
                dataRow["Classifactions"]      = row.Classifications ?? string.Empty;
                dataRow["Remarks"]             = row.RemarkText ?? string.Empty;
                dataRow["ReportNo"]            = rgReport.ReportNo ?? string.Empty;
                dataRow["ReportDate"]          = rgReport.ReportDate.ToShortDateString();
                dataRow["Film"]                = rgReport.Film ?? string.Empty;
                dataRow["RTNO"]                = rgReport.RTNo ?? string.Empty;
                dataRow["FPNO"]                = rgReport.FixedPattern != null? rgReport.FixedPattern.FPNo : string.Empty;
                dataRow["HEATNO"]              = rgReport.HeatNo ?? string.Empty;
                dataRow["DateOfTest"]          = rgReport.DateOfTest.ToShortDateString();
                dataRow["LeadScreenFrontBack"] = rgReport.LeadScreen;
                dataRow["Viewing"]             = rgReport.Viewing ?? string.Empty;
                dataRow["Source"]              = rgReport.Source ?? string.Empty;
                dataRow["SourceSize"]          = rgReport.SourceSize ?? string.Empty;
                dataRow["Coverage"]            = rgReport.Coverage != null ? rgReport.Coverage.CoverageName:string.Empty;
                dataRow["ProcedureReference"]  = rgReport.ProcedureRef ?? string.Empty;
                dataRow["AcceptanceAsper"]     = rgReport.AcceptanceAsPer ?? string.Empty;
                dataRow["TotalNoOfFilms"]      = totalFilmCount;
                dataRow["Ir192_Co60 Strength"] = rgReport.Strength ?? string.Empty;

                foreach (var en in ctx.Energies)
                {
                    dataRow[en.Name + " Area"] = rgReport.RGReportRows
                                                 .Where(p => p.EnergyID == en.ID &&
                                                        p.RemarkText != "RETAKE")
                                                 .Sum(p => p.FilmSize.Area * p.FilmCount);
                }

                rows.Add(dataRow);
            }



            var ds = new DataSet("ReportDataSet");

            ds.Tables.Add(reportTable);

            reportGrid            = new BindableDataGrid.BindableDataGrid();
            reportGrid.DataSource = ds;
            reportGrid.DataMember = "Report";
            reportGrid.DataBind();

            busyIndicator.IsBusy = false;

            myPopup.IsOpen = true;
        }
        private void loadCompleted(object sender, EventArgs e)
        {
            var report = ((LoadOperation<FixedPatternPerformanceRow>)sender).Entities;

            //Can't directly bind the report to the grid due to variable no of columns. Using a custom datagrid bindable
            //to a datatable instead

            reportTable = new DataTable("Report");

            var cols = reportTable.Columns;
            var rows = reportTable.Rows;

            var locationRow = new DataRow();
            rows.Add(locationRow);

            var segmentRow = new DataRow();
            rows.Add(segmentRow);

            AddTextColumn(reportTable, "FPNo", "FP No");
            AddTextColumn(reportTable, "RTNo", "RT No");
            AddTextColumn(reportTable, "ReportNo", "Report No");
            AddTextColumn(reportTable, "Coverage", "Coverage");
            AddTextColumn(reportTable, "HeatNo", "Heat No");
            AddTextColumn(reportTable, "Date", "Date");

            segmentRow["FPNo"] = "FPNo";
            segmentRow["ReportNo"] = "ReportNo";
            segmentRow["RTNo"] = "RTNo";
            segmentRow["HeatNo"] = "HeatNo";
            segmentRow["Coverage"] = "Coverage";
            segmentRow["Date"] = "Date";

            string prevRTNo = "";

            //get the columns in order first
            string prevLocn = "";
            foreach (var locseg in report
                                    .SelectMany(p => p.Locations)
                                    .SelectMany(l => l.Segments.Select(s => new Tuple<string, string>(l.Location, s.Segment)))
                                    .Distinct()
                                    .OrderBy(q => q.Item1).ThenBy(q => q.Item2))
            {
                string header = String.Concat(locseg.Item1, "-", locseg.Item2);
                string colname = "col" + header.Replace("-", "");
                if (cols.FirstOrDefault(p => p.Caption == header) == null)
                {
                    AddTextColumn(reportTable, colname, header);
                    locationRow[colname] = locseg.Item1 == prevLocn ? "" : locseg.Item1; //do not get location get repeated
                    prevLocn = locseg.Item1;
                    segmentRow[colname] = locseg.Item2;
                }
            }

            lstExcelDataRows = new List<DataRow> {locationRow, segmentRow};

            foreach (var rt in report)
            {
                var row = new DataRow();
                var rowWithColor = new DataRow();

                row["FPNo"] = rowWithColor["FPNo"] = rt.FPNo; //txtFPNo.Text; //won't change throughout the report
                row["RTNo"] = rowWithColor["RTNo"] = prevRTNo == rt.RTNo ? "" : rt.RTNo; //prevent same RT No from repeating
                row["ReportNo"] = rowWithColor["ReportNo"] = rt.ReportNo;
                row["Coverage"] = rowWithColor["Coverage"] = rt.Coverage;
                row["HeatNo"] = rowWithColor["HeatNo"] = rt.HeatNo;
                prevRTNo = rt.RTNo;
                row["Date"] = rowWithColor["Date"] = rt.Date.ToString("dd/MM/yyyy");

                prevLocn = "";
                foreach (var loc in rt.Locations)
                {
                    foreach (var seg in loc.Segments)
                    {
                        string header = String.Concat(loc.Location, "-", seg.Segment);
                        string colname = "col" + header.Replace("-", "");
                        //no need to show NSD - not any more
                        row[colname] = seg.Observations.ToUpper();
                        string colourCode;
                        colourCode = RemarksColorCodeDic.ContainsKey(seg.RemarkText)
                                         ? RemarksColorCodeDic[seg.RemarkText]
                                         : string.Empty;
                        rowWithColor[colname] = seg.Observations.ToUpper() + colourCode;
                    }
                }
                rows.Add(row);
                lstExcelDataRows.Add(rowWithColor);
            }

            DataSet ds = new DataSet("ReportDataSet");
            ds.Tables.Add(reportTable);

            excelTable = new DataTable("ExcelReport");
            foreach (DataColumn column in reportTable.Columns)
            {
                excelTable.Columns.Add(column);
            }

            foreach (var row in lstExcelDataRows)
            {
               excelTable.Rows.Add(row);
            }

            reportGrid.DataSource = ds;
            reportGrid.DataMember = "Report";
            reportGrid.DataBind();

            var excelDs = new DataSet("ExcelDataSet");
            excelDs.Tables.Add(excelTable);
            reportGrid1 = new BindableDataGrid.BindableDataGrid {DataSource = excelDs, DataMember = "ExcelReport"};
            reportGrid1.DataBind();

            busyIndicator.IsBusy = false;
        }