/// <summary> /// Create Extender as a child control /// </summary> private void AddChildControls() { // Look Behind - do not render in Design Mode if (!this.DesignMode) { this.lookBehindListView = new MedicationListView(this.Items); this.lookBehindListView.ID = this.ID + "_LookBehind"; this.lookBehindListView.Mode = MedicationListViewMode.LookBehind; this.lookBehindListView.ShowGraphics = this.ShowGraphics; this.lookBehindListView.Style.Add(HtmlTextWriterStyle.Display, this.ShowLookAheadBehind ? "" : "none"); this.Controls.Add(this.lookBehindListView); this.medicationGridExtender.LookBehindControlID = this.lookBehindListView.ClientID; } // Grid Contents MedicationGridHeader medicationGridHeader = new MedicationGridHeader(); medicationGridHeader.ID = this.ID + "_Header"; medicationGridHeader.ParentGrid = this; this.Controls.Add(medicationGridHeader); // Medication Lines - do not render in DesignMode if (!this.DesignMode) { for (int index = 0; index < this.Items.Count; index++) { Medication medication = this.Items[index]; MedicationLine line = new MedicationLine(medication); line.ID = string.Concat(this.ID, "_medLine", index.ToString(CultureInfo.CurrentUICulture)); line.EnableViewState = false; line.EnableExtender = false; line.ShowDosageDetails = this.ShowDosageDetails; line.ShowGraphics = this.ShowGraphics; line.ShowReason = this.ShowReason; line.ShowStatus = this.ShowStatus; line.RenderTable = false; line.ShowStatusDate = this.ShowStatusDate; line.SimpleMode = this.SimpleMode; line.CssClass = "nhscui_mg_ml"; line.ToolTip = medication.MedicationTooltip; this.Controls.Add(line); } } MedicationGridFooter medicationGridFooter = new MedicationGridFooter(); medicationGridFooter.ID = this.ID + "_Footer"; this.Controls.Add(medicationGridFooter); // Look Ahead - not render Design Time if (!this.DesignMode) { this.lookAheadListView = new MedicationListView(this.Items); this.lookAheadListView.ID = this.ID + "_LookAhead"; this.lookAheadListView.ShowGraphics = this.ShowGraphics; this.lookAheadListView.Style.Add(HtmlTextWriterStyle.Display, this.ShowLookAheadBehind ? "" : "none"); this.lookAheadListView.Mode = MedicationListViewMode.LookAhead; this.Controls.Add(this.lookAheadListView); this.medicationGridExtender.LookAheadControlID = this.lookAheadListView.ClientID; } }
/// <summary> /// Render Contents /// </summary> /// <param name="writer">HtmlTextWriter to render to</param> protected override void Render(HtmlTextWriter writer) { // Render directly to the writer for performance reasons. This should also make the control // easier to port to pure client-side rendering if required // Scroll Table writer.WriteBeginTag(HtmlTextWriterTag.Table.ToString()); writer.WriteAttribute("id", this.parentGrid.ClientID + "_scrollTable"); writer.WriteAttribute("cellspacing", "0"); writer.WriteAttribute("cellpadding", "0"); writer.WriteAttribute("border", "0"); writer.WriteAttribute("class", "nhscui_mg_scroll_table"); if (!this.DesignMode) { writer.Write("style=\""); writer.WriteStyleAttribute(HtmlTextWriterStyle.Visibility.ToString(), "hidden"); writer.WriteStyleAttribute(HtmlTextWriterStyle.Width.ToString(), "100%"); writer.Write(HtmlTextWriter.DoubleQuoteChar); } writer.Write(HtmlTextWriter.TagRightChar); // Header writer.WriteFullBeginTag(HtmlTextWriterTag.Tr.ToString()); writer.WriteFullBeginTag(HtmlTextWriterTag.Td.ToString()); writer.WriteBeginTag(HtmlTextWriterTag.Div.ToString()); writer.WriteAttribute("class", "nhscui_mg_header"); writer.Write("style=\""); writer.WriteStyleAttribute("width", this.ParentGrid.Width.ToString()); writer.Write(HtmlTextWriter.DoubleQuoteChar); writer.Write(HtmlTextWriter.TagRightChar); writer.WriteBeginTag(HtmlTextWriterTag.Table.ToString()); writer.WriteAttribute("id", "headerTable"); writer.WriteAttribute("class", "nhscui_mg_header_table"); writer.WriteAttribute("cellspacing", "0"); writer.WriteAttribute("cellpadding", "0"); writer.WriteAttribute("border", "0"); // Apply BorderCollapse override. This Style attribute will be removed client-side // This is to resolve an IE Issue where collapsed borders are not hidden on render writer.Write("style=\""); if (!string.IsNullOrEmpty(this.ParentGrid.Width.ToString())) { writer.WriteStyleAttribute("width", "100%"); } writer.WriteStyleAttribute("border-collapse", "separate"); writer.Write(HtmlTextWriter.DoubleQuoteChar); writer.Write(HtmlTextWriter.TagRightChar); writer.WriteFullBeginTag(HtmlTextWriterTag.Tr.ToString()); // StartDate Column Header MedicationGridHeader.WriteColumnHeader(writer, "nhscui_mg_header_startdate", this.parentGrid.StartDateColumnWidth, this.parentGrid.StartDateColumnHeaderText, true, 1); // DrugDetails Column Header MedicationGridHeader.WriteColumnHeader(writer, "nhscui_mg_header_drugdetails", this.parentGrid.DrugDetailsColumnWidth, this.parentGrid.DrugDetailsColumnHeaderText, true, 3); // Reason Column Header MedicationGridHeader.WriteColumnHeader(writer, "nhscui_mg_header_reason", this.parentGrid.ReasonColumnWidth, this.parentGrid.ReasonColumnHeaderText, this.parentGrid.ShowReason, 1); // Status Column Header MedicationGridHeader.WriteColumnHeader(writer, "nhscui_mg_header_status", this.parentGrid.StatusColumnWidth, this.parentGrid.StatusColumnHeaderText, this.parentGrid.ShowStatus || this.parentGrid.ShowStatusDate, 1); // Header End Tags writer.WriteEndTag(HtmlTextWriterTag.Table.ToString()); writer.WriteEndTag(HtmlTextWriterTag.Div.ToString()); writer.WriteEndTag(HtmlTextWriterTag.Td.ToString()); writer.WriteEndTag(HtmlTextWriterTag.Tr.ToString()); // Body writer.WriteFullBeginTag(HtmlTextWriterTag.Tr.ToString()); writer.WriteFullBeginTag(HtmlTextWriterTag.Td.ToString()); writer.WriteBeginTag(HtmlTextWriterTag.Div.ToString()); writer.WriteAttribute("id", this.parentGrid.ClientID + "_bodyDiv"); writer.WriteAttribute("class", "nhscui_mg_body"); writer.Write(" style=\""); writer.WriteStyleAttribute("overflow-x", "hidden"); // For initial rendering hide y overflow. This will be set where applicable in the behavior. writer.WriteStyleAttribute("overflow-y", "hidden"); writer.WriteStyleAttribute(HtmlTextWriterStyle.Height.ToString(), "0"); writer.Write(HtmlTextWriter.DoubleQuoteChar); writer.Write(HtmlTextWriter.TagRightChar); // Body Table writer.WriteBeginTag(HtmlTextWriterTag.Table.ToString()); writer.WriteAttribute("id", this.parentGrid.ClientID + "_bodyTable"); writer.WriteAttribute("cellspacing", "0"); writer.WriteAttribute("cellpadding", "0"); writer.WriteAttribute("class", "nhscui_mg_body_table"); writer.WriteAttribute("border", "0"); writer.WriteAttribute("onselectstart", "return false;"); // Apply BorderCollapse override. This Style attribute will be removed client-side // This is to resolve an IE Issue where collapsed borders are not hidden on render writer.Write("style=\""); writer.WriteStyleAttribute("-moz-user-select", "none"); writer.WriteStyleAttribute("border-collapse", "separate"); writer.Write(HtmlTextWriter.DoubleQuoteChar); writer.Write(HtmlTextWriter.TagRightChar); }