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; }
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; }