public GridViewTable( Func<IEnumerable<TableLegendItemViewModel>> getViewModels, ExtendedGridView extendedGridView) { _getViewModels = getViewModels; _extendedGridView = extendedGridView; }
/// <summary> /// When Stages Grid is bound, color boxes need to be set and colors assigned /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void SetColorBox(object sender, GridViewRowEventArgs e) { ExtendedGridView srcGrid = sender as ExtendedGridView; if (srcGrid == StagesGrid && e.Row.RowType == DataControlRowType.DataRow) { int lkpCodeId = int.Parse(StagesGrid.DataKeys[e.Row.RowIndex][LookupCode.LookupCodeId].ToString()); HiddenField lkpCodeIdField = e.Row.FindControl("LookupCodeId") as HiddenField; lkpCodeIdField.Value = lkpCodeId.ToString(); HiddenField colorCodeField = e.Row.FindControl("ColorCode") as HiddenField; HiddenField lookupCodeAttributeId = e.Row.FindControl("LookupCodeAttributeId") as HiddenField; Label colorBoxField = e.Row.FindControl("ColorCodeBox") as Label; // Show color picker when clicking on box and copy selected value to hidden field colorBoxField.Attributes["onclick"] = "showColorPicker('" + colorCodeField.ClientID + "',this,event);"; if (stageColorCodeAttributes != null) { DataRow[] attValues = stageColorCodeAttributes.Select("LookupCodeId = " + lkpCodeId); if (attValues.Length > 0) { string colorCode = attValues[0][LookupCodeAttribute.AttributeValue].ToString(); lookupCodeAttributeId.Value = attValues[0][LookupCodeAttribute.LookupCodeAttributeId].ToString(); colorCodeField.Value = colorCode; colorBoxField.Style[HtmlTextWriterStyle.BackgroundColor] = colorCode; } } } }
/// <summary> /// Hide show options row/label if no records /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ShowHideOptionsLink(object sender, EventArgs e) { ExtendedGridView attributesGrid = sender as ExtendedGridView; if (attributesGrid.Rows.Count == 0) { GridViewRow eventRow = attributesGrid.NamingContainer as GridViewRow; HtmlTableRow showAttributesRow = eventRow.FindControl("ShowOptionFieldsRow") as HtmlTableRow; showAttributesRow.Visible = false; } }
/// <summary> /// Builds the matrix representing Diagnostic and DxImageFinding Records based on DxType /// </summary> private void BuildMatrix() { if (!string.IsNullOrEmpty(ImageType)) { // Bind Header Columns DiagnosticsHeaderRptr.DataSource = DiagnosticRecords; DiagnosticsHeaderRptr.DataBind(); // Bind Main Matrix Spacer Headers DxImageFindingGroupRowsHeaderRptr.DataSource = DiagnosticRecords; DxImageFindingGroupRowsHeaderRptr.DataBind(); // Bind Diagnostic List for Adding new Legion CTMRI_ExistingDiagnostics.DataSource = DiagnosticRecords; CTMRI_ExistingDiagnostics.DataBind(); PET_ExistingDiagnostics.DataSource = DiagnosticRecords; PET_ExistingDiagnostics.DataBind(); // Build Left Rows by GroupNum DxImageFindingsGroupsRptr.DataSource = DxImgGroups; DxImageFindingsGroupsRptr.DataBind(); // Build Main Matrix Rows by GroupNum DxImageFindingGroupRowsRptr.DataSource = DxImgGroups; DxImageFindingGroupRowsRptr.DataBind(); // Can't add Lesion without exisiting Diagnostic AddNewLesionBtn.Visible = DiagnosticRecords.Count > 0; // build default PET grid fields ExtendedGridView hottestGrid = DxGrid1; ExtendedGridView newGrid = DxGrid2; DataView childFindings = new BusinessObject[] { }.AsDataView("DxImageFindings"); hottestGrid.DataSource = childFindings; hottestGrid.DataBind(); newGrid.DataSource = new DataView(childFindings.Table); newGrid.DataBind(); } }
private void SetupGrid(int gridHeight) { try { if (_gridSetup) { return; } if (_gridCalendar != null) { _gridView = new ExtendedGridView(this, gridHeight); var newParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.MatchParent); _gridView.LayoutParameters = newParams; if (_gridView != null) { _gridView.SetHorizontalSpacing(1); _gridView.SetVerticalSpacing(1); _gridView.SetPadding(1, 1, 0, 0); _gridView.SetBackgroundColor(Color.Argb(100, 10, 80, 255)); _gridCalendar.AddView(_gridView); _gridSetup = true; if (_isOrientationChange) { Log.Info(TAG, "SetupGrid: Orientation has changed, setting grid view month to " + _currentMonth.ToString()); _gridView.CalendarInstance.Set(Java.Util.CalendarField.Month, _currentMonth); _isOrientationChange = false; } _gridView.UpdateAdapter(); } } } catch (Exception e) { Log.Error(TAG, "SetupGrid: Exception - " + e.Message); if (GlobalData.ShowErrorDialog) { ErrorDisplay.ShowErrorAlert(this, e, "Setting up grid", "ResourcesAppointmentPlannerActivity.SetupGrid"); } } }
/// <summary> /// Add dirty input controls tracking /// </summary> /// <param name="control"></param> protected void InitDirtyControlTracking(Control control) { if (control is Repeater) { Repeater rptr = control as Repeater; // reset dirty values rptr.DataBinding += (o, e) => { ClearDirtyInputControls(rptr.Items.Cast <Control>().ToArray()); }; // track dirty values rptr.ItemCreated += (o, e) => TrackDirtyInputControl(e.Item); } else if (control is GridView) { GridView grid = control as GridView; // reset dirty values grid.DataBinding += (o, e) => { ClearDirtyInputControls(grid.Rows.Cast <Control>().ToArray()); }; // track dirty values grid.RowCreated += (o, e) => TrackDirtyInputControl(e.Row); // special AppendTo logic if (grid is ExtendedGridView) { ExtendedGridView extendedGridView = grid as ExtendedGridView; extendedGridView.AppendToUserName = AppendToUserName; } } // TODO: better handling else { // reset dirty values control.Load += (o, e) => ClearDirtyInputControls(control); //var inputs = CICHelper.GetCaisisInputControls(control).Cast<Control>().ToArray(); TrackDirtyInputControl(control); } }
/// <summary> /// Inserts/Updates the Diagnostic record in the specific container, i.e., RepeaterItem, Control, etc... /// </summary> /// <param name="fieldsContainer"></param> /// <param name="patientId"></param> /// <returns></returns> private Diagnostic UpdateDiagnosticsByContainer(Control fieldsContainer, int patientId) { Control petFields = fieldsContainer.FindControl("PET_Fields"); Control ctMRIFields = fieldsContainer.FindControl("CTMRI_Fields"); Control shareFields = fieldsContainer.FindControl("SHARED_Fields"); Control mainFields = ImageType == "PET" ? petFields : ctMRIFields; CaisisHidden diagIdField = fieldsContainer.FindControl("DiagnosticIdField") as CaisisHidden; Diagnostic biz = new Diagnostic(); int? diagnosticId = null; if (!string.IsNullOrEmpty(diagIdField.Value)) { diagnosticId = int.Parse(diagIdField.Value); biz.Get(diagnosticId.Value); } // set main fields CICHelper.SetBOValues(shareFields.Controls, biz, patientId); CICHelper.SetBOValues(mainFields.Controls, biz, patientId); biz.Save(); // update key diagnosticId = (int)biz[Diagnostic.DiagnosticId]; diagIdField.Value = diagnosticId.ToString(); // special case: updated/insert PET image findings if (mainFields == petFields && diagnosticId.HasValue) { // containers are named by index Control boneFields = petFields.FindControl("PET_Fields_Finding0"); Control softTissueFields = petFields.FindControl("PET_Fields_Finding1"); Control lymphNodeFields = petFields.FindControl("PET_Fields_Finding2"); // generic insert/update logic foreach (Control petFindingContainer in new Control[] { boneFields, softTissueFields, lymphNodeFields }) { ImageFinding findingBiz = new ImageFinding(); ICaisisInputControl findingKeyField = FindInputControl(petFindingContainer, ImageFinding.DxImageFindingId); // only continue if fields have values bool fieldsHaveData = (from input in CICHelper.GetCaisisInputControls(petFindingContainer) where input != findingKeyField && !string.IsNullOrEmpty(input.Value) select input).Count() > 0; // update if (!string.IsNullOrEmpty(findingKeyField.Value)) { int dxImageFindingId = int.Parse(findingKeyField.Value); findingBiz.Get(dxImageFindingId); } // insert else if (fieldsHaveData) { // !important, mark special DxImageFinding status for later retrieval (bone/soft tissue) if (petFindingContainer == boneFields) { findingBiz[ImageFinding.ImgFindStatus] = PET_SCAN_LOCATION_BONE; } else if (petFindingContainer == softTissueFields) { findingBiz[ImageFinding.ImgFindStatus] = PET_SCAN_LOCATION_SOFT_TISSUE; } else if (petFindingContainer == lymphNodeFields) { findingBiz[ImageFinding.ImgFindStatus] = PET_SCAN_LOCATION_NYMPH_NODE; } } // if field have no data on new records, ignore, do not insert else { continue; } // set fields and update CICHelper.SetBOValues(petFindingContainer.Controls, findingBiz, diagnosticId.Value); findingBiz.Save(); findingKeyField.Value = findingBiz[ImageFinding.DxImageFindingId].ToString(); } // udpate/insert special findings datagrids ExtendedGridView hottestGrid = petFields.FindControl("DxGrid1") as ExtendedGridView; ExtendedGridView newGrid = petFields.FindControl("DxGrid2") as ExtendedGridView; if (hottestGrid != null && newGrid != null) { string type = Request.Form["NewLesionsGroup_Type"]; // update grids foreach (ExtendedGridView grid in new ExtendedGridView[] { hottestGrid, newGrid }) { // special fix, set ImgFindGroupNum foreach (GridViewRow row in grid.Rows) { int groupNum = row.RowIndex + 1; var imgFindGroupField = FindInputControl(row, ImageFinding.ImgFindGroupNum); imgFindGroupField.Value = groupNum.ToString(); } if ((grid == hottestGrid && type == "Hottest") || (grid == newGrid && type == "New")) { grid.Save(diagnosticId.Value); } } } } return(biz); }