internal void Render(WebGridHtmlWriter mywriter) { // MasterWebGrid is using SlaveGridMenu. if (((m_Grid.SystemMessage.CriticalCount == 0 && m_Grid.MasterGrid != null && m_Grid.MasterWebGrid != null && m_Grid.m_IsGridInsideGrid == false && m_Grid.MasterWebGrid.DisplaySlaveGridMenu && (m_Grid.MasterWebGrid.ActiveMenuSlaveGrid == null || m_Grid.MasterWebGrid.ActiveMenuSlaveGrid.ClientID != m_Grid.ClientID)) ) || (m_Grid.m_IsGridInsideGrid && m_Grid.MasterWebGrid != null && m_Grid.MasterWebGrid.m_HasRendered == false)) { return; } if (m_Grid.HideIfEmptyGrid && m_Grid.MasterTable.Rows.Count == 0 && m_Grid.SystemMessage.CriticalCount == 0 && !m_Grid.m_ActiveColumnFilter) { if (m_Grid.EmptyDataTemplate != null) { mywriter.Write(m_Grid.EmptyDataTemplate); } return; } m_Grid.m_HasRendered = true; if (m_Grid.Tag["wgcsslink"] != null) { mywriter.Write(m_Grid.Tag.Get("wgcsslink")); } if (m_Grid.Tag["wgscriptstyles"] != null) { mywriter.Write(m_Grid.Tag.Get("wgscriptstyles")); } if (m_Grid.PreGridTemplate != null) { mywriter.Write(m_Grid.PreGridTemplate); } string width = string.Empty; if (m_Grid.Width.IsEmpty == false) { width = string.Format(" width=\"{0}\"", m_Grid.Width); } StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); System.Web.UI.HtmlTextWriter renderBeginTag = new System.Web.UI.HtmlTextWriter(sw); m_Grid.RenderBeginTag(renderBeginTag); string webAttributes = sb.ToString(); // Remove first tag which is always 'id=' webAttributes = webAttributes.Remove(0, webAttributes.IndexOf("id=")); // Clean up.. webAttributes = webAttributes.Remove(0, webAttributes.IndexOf(" ")); webAttributes = string.Format("<table{0}", webAttributes.Remove(webAttributes.Length - 1)); #region slavegrid menu bool systemMessagetriggered = false; if (m_Grid.DisplayView == DisplayView.Detail && m_Grid.DisplaySlaveGridMenu && m_Grid.SlaveGrid.Count > 0 && m_Grid.InternalId != null) { mywriter.Write("<!--WebGrid menu starts rendering -->\n"); mywriter.Write("{0} class=\"wgmenu\" {1} cellpadding=\"0\" cellspacing=\"0\" id=\"wgMenu_{2}\"><tr><td>", webAttributes, width, m_Grid.ClientID); if (m_Grid.SystemMessage.Count > 0) { mywriter.Write(m_Grid.SystemMessage.RenderSystemMessage); if (m_Grid.Scripts == null || !m_Grid.Scripts.DisableBookmark) { Grid.AddClientScript(mywriter, string.Format("bookmarkscroll.init();bookmarkscroll.scrollTo('wgSystemMessage_{0}')", m_Grid.ID)); } mywriter.Write("</td></tr><tr><td>"); systemMessagetriggered = true; } /* cellpadding and cellspacing are fixed because CSS does not support similar behavior*/ mywriter.Write("<table class=\"wgmenunavigation\" cellpadding=\"0\" cellspacing=\"0\"><tr align=\"left\">"); bool createmenuspace = false; foreach (Grid slavegrid in m_Grid.SlaveGrid) { if (createmenuspace) { mywriter.Write("<td class=\"wgmenuspacing\"></td>"); } else { createmenuspace = true; } if (m_Grid.ActiveMenuSlaveGrid != slavegrid) { string colorstyle = null; if (Grid.MenuInactiveColor != Color.Empty) { colorstyle = string.Format("style=\"background-color:{0}\"", Grid.ColorToHtml(Grid.MenuInactiveColor)); } if (m_Grid.IsUsingJQueryUICSSFramework) { mywriter.Write( "<td id=\"wgmenu_{0}_{1}\">{2}</td>", m_Grid.ClientID, slavegrid.ClientID, m_Grid.SlaveGrid.GetSlaveGridAnchor(slavegrid)); } else { mywriter.Write( "<td id=\"wgmenu_{0}_{1}\"><div class=\"wglefttab_off\"></div><div {2} class=\"wginactivemenu wgrighttab_off\">{3}</div></td>", m_Grid.ClientID, slavegrid.ClientID, colorstyle, m_Grid.SlaveGrid.GetSlaveGridAnchor(slavegrid)); } } else { string colorstyle = null; if (Grid.MenuActiveColor != Color.Empty) { colorstyle = string.Format("style=\"background-color:{0}\"", Grid.ColorToHtml(Grid.MenuActiveColor)); } if (m_Grid.IsUsingJQueryUICSSFramework) { mywriter.Write( "<td id=\"wgmenu_{0}_{1}\">{2}</td>", m_Grid.ClientID, slavegrid.ClientID, m_Grid.SlaveGrid.GetSlaveGridAnchor(slavegrid)); } else { mywriter.Write( "<td id=\"wgmenu_{0}_{1}\"><div class=\"wglefttab_on\"></div><div {2} class=\"wgactivemenu wgrighttab_on\">{3}</div></td>", m_Grid.ClientID, slavegrid.ClientID, colorstyle, m_Grid.SlaveGrid.GetSlaveGridAnchor(slavegrid)); } } } mywriter.Write("</tr></table></td></tr></table><br/>"); mywriter.Write("<!--WebGrid menu finished rendering -->\n"); } #endregion if (m_Grid.SystemMessage.Count > 0 && systemMessagetriggered == false) { mywriter.Write(m_Grid.SystemMessage.RenderSystemMessage); if (m_Grid.Scripts == null || !m_Grid.Scripts.DisableBookmark) { Grid.AddClientScript(mywriter, string.Format("bookmarkscroll.init();bookmarkscroll.scrollTo('wgSystemMessage_{0}')", m_Grid.ID)); } } mywriter.Write("<!--WebGrid grid starts rendering -->\n"); mywriter.Write("{0} {1} cellpadding=\"0\" class=\"wgmaingrid\" cellspacing=\"0\" id=\"wgContent_{2}\"><tr><td>", webAttributes, width, m_Grid.ID); ApplyAjaxLoader(mywriter); if (m_Grid.SystemMessage.CriticalCount == 0) { switch (m_Grid.DisplayView) { case DisplayView.Grid: if (m_Grid.AllowEditInGrid && m_Grid.PageIndex == 0 && m_Grid.Page != null) { if (m_Grid.EnableCallBack) { mywriter.Write( "<input type=\"hidden\" id=\"{0}_where\" name=\"{0}_where\" value=\"{1}\" />", m_Grid.ClientID, HttpUtility.UrlEncode(m_Grid.FilterExpression, Encoding.Default)); } else { m_Grid.Page.ClientScript.RegisterHiddenField( string.Format("{0}_where", m_Grid.ClientID), HttpUtility.UrlEncode(m_Grid.FilterExpression, Encoding.Default)); } } RenderGrid(ref m_Grid, ref mywriter); break; case DisplayView.Detail: RenderDetail(ref m_Grid, ref mywriter); break; } } mywriter.Write("</td></tr></table>"); mywriter.Write("<!--WebGrid grid finished rendering -->\n"); if (m_Grid.Page != null && (m_Grid.Scripts == null || !m_Grid.Scripts.DisableWebGridClientObject)) { m_Grid.JsOnData.AppendLine(); m_Grid.JsOnData.Append(WebGridClientObject.GetGridObject(m_Grid)); } if (m_Grid.Scripts == null || !m_Grid.Scripts.DisableContextMenu) { m_Grid.GetContextMenuHtml(mywriter); Grid.AddClientScript(mywriter, string.Format(contextscript, m_Grid.ID)); } if (m_Grid.ClientNotifications != null && m_Grid.ClientNotifications.Count > 0 && (m_Grid.Scripts == null || !m_Grid.Scripts.DisableClientNotification)) { ClientNotification clientSettings = m_Grid.ClientNotification ?? Grid.DefaultClientNotification; if (clientSettings.HeaderText == null) { clientSettings.HeaderText = m_Grid.Title; } if (clientSettings.HeaderText == null) { clientSettings.HeaderText = string.Empty; } StringBuilder template = string.IsNullOrEmpty(clientSettings.Container) ? new StringBuilder( "$(document).ready( function() {{ $.jGrowl(\"{0}\", {{ header: '") : new StringBuilder( string.Format( "$(document).ready( function() {{ $('#{0}').jGrowl(\"{0}\", {{ header: '", clientSettings.Container)); template.Append(clientSettings.HeaderText.Replace("\"", "\\")); template.AppendFormat("', sticky: {0}", clientSettings.Sticky.ToString().ToLower()); template.AppendFormat(", life: {0}", clientSettings.LifeSpan); if (clientSettings.CloserTemplate != null) { template.AppendFormat(", closerTemplate: '{0}'", clientSettings.CloserTemplate.Replace("\"", "\\")); } template.Append(", closer: " + clientSettings.Closer.ToString().ToLower()); if (!string.IsNullOrEmpty(clientSettings.CssClass)) { template.AppendFormat(", theme: '{0}'", clientSettings.CssClass); } template.Append("}}); }});"); if (m_Grid.ClientNotifications.Count > 0) { foreach (string arg in m_Grid.ClientNotifications) { Grid.AddClientScript(mywriter, string.Format(template.ToString(), arg.Replace("\"", "\\"))); } } } if ((m_Grid.Scripts == null || !m_Grid.Scripts.DisableInputMask) && m_Grid.MaskedColumns.Count > 0) { StringBuilder masks = new StringBuilder(); foreach (KeyValuePair <string, string> dictionary in m_Grid.MaskedColumns) { if (masks.Length > 3) { masks.Append(", "); } masks.AppendFormat("{0}:{{ mask: {1} }}", dictionary.Key, dictionary.Value); } string options; if (m_Grid.MaskedInput != null) { options = string.Format("{{selectCharsOnFocus: {0},textAlign: {1},autoTab:{2}, attr: '{3}'}}", MaskedInput.GetStringValue(m_Grid.MaskedInput.EnableSelectCharsOnFocus), MaskedInput.GetStringValue(m_Grid.MaskedInput.EnableTextAlign), MaskedInput.GetStringValue(m_Grid.MaskedInput.EnableAutoTab), m_Grid.MaskedInput.Attribute); } else { options = "{selectCharsOnFocus: true,textAlign: false,autoTab:false, attr: 'alt'}"; } Grid.AddClientScript(mywriter, string.Format(meiomask, m_Grid.ID, masks, options)); } if (Anthem.Manager.IsCallBack && (m_Grid.Scripts == null || !m_Grid.Scripts.DisableHoverButtons)) { Grid.AddClientScript(mywriter, Grid.HoverButtonScript); } if (m_Grid.JsOnData.Length > 2) { mywriter.Write(@"<script type=""text/javascript"">{0}</script>", m_Grid.JsOnData.ToString()); } mywriter.Close(); if (m_Grid.Trace.IsTracing) { m_Grid.Trace.Trace("Finish Render();"); } }
internal static void CreateFilterByColumns(Grid grid, WebGridHtmlWriter writer, int[] sortedColumnID) { grid.m_RowsAdded++; writer.Write( grid.IsUsingJQueryUICSSFramework ? "<tr class=\"ui-widget wgrow\" id=\"{0}r{1}\">" : "<tr class=\"wgrow\" id=\"{0}r{1}\">", grid.ID, grid.m_RowsAdded); for (int ii = 0; ii < sortedColumnID.Length; ii++) { Column column = grid.MasterTable.Columns[sortedColumnID[ii]]; if (column.FilterByColumnCollection.Count == 0) { string columnstyle = string.Empty; string columnId = string.Format(" id=\"{0}{1}r{2}\"", grid.ID, column.ColumnId, grid.m_RowsAdded); if (grid.MasterTable.Columns[column.ColumnId].WidthColumnHeaderTitle != Unit.Empty) { columnstyle = string.Format("style=\"width: {0};\"", grid.MasterTable.Columns[column.ColumnId].WidthColumnHeaderTitle); } writer.Write("<th {0} {1}> </th>", columnstyle, columnId); continue; } ColumnHeader addcolumn = new ColumnHeader { m_Class = string.Format("{0} wggridcell", column.CssClassTitle), m_Align = column.GridAlign, m_VAlign = VerticalPosition.bottom, m_ColumnWidth = grid.MasterTable.Columns[column.ColumnId].WidthColumnHeaderTitle, m_GridRowCount = grid.m_RowsAdded, m_GridId = grid.ID }; addcolumn.RenderBeginTag(writer, column, null, "<th"); string selectedValue = null; if (Grid.GotHttpContext && HttpContext.Current.Request.Form[string.Format("ddl{0}", column.ClientHeaderId)] != null) { selectedValue = HttpUtility.HtmlEncode( HttpContext.Current.Request.Form[string.Format("ddl{0}", column.ClientHeaderId)]); grid.State(string.Format("ddl{0}", column.ClientHeaderId), selectedValue); } else if (grid.GetState(string.Format("ddl{0}", column.ClientHeaderId)) != null) { selectedValue = grid.GetState(string.Format("ddl{0}", column.ClientHeaderId)) as string; } bool isdate = false; if (grid.MasterTable.Columns[column.ColumnId].ColumnType == ColumnType.DateTime) { isdate = true; } string eventScript = string.Empty; if (grid.Page != null) { string link = grid.EnableCallBack && !column.ForcePostBack ? Asynchronous.GetCallbackEventReference(grid, string.Format("ElementPostBack!ddl{0}", column.ColumnId), false, string.Empty, string.Empty) : grid.Page.ClientScript.GetPostBackEventReference(grid, string.Format("ElementPostBack!ddl{0}", column.ColumnId)); eventScript = string.Format(" onchange=\"{0}\" ", link); } string style = grid.MasterTable.Columns[column.ColumnId].WidthColumnHeaderTitle != Unit.Empty ? "class=\"wgeditfield wgselectbox \"" : " class=\"wgeditfield wgselectbox \" "; if (!isdate) { StringBuilder dropdownbox = new StringBuilder("<select "); dropdownbox.AppendFormat("{0} name=\"ddl{1}\" id=\"ddl{1}\" {2}><option value=\"\" selected=\"selected\">{3}</option>", style, column.ClientHeaderId, eventScript, column.Grid.GetSystemMessage("EmptySearchFilter")); if (grid.Scripts == null || !grid.Scripts.DisableSelectMenu) { Grid.AddClientScript(writer, string.Format("$(document).ready(function() {{$('#ddl{0}').selectmenu({{maxHeight: {2},style:'dropdown',width: {1}}});}});", column.ClientHeaderId, column.WidthColumnHeaderTitle.Value, 400)); } int i = 0; while (i < column.FilterByColumnCollection.Count) { string _value = HttpUtility.HtmlEncode(column.FilterByColumnCollection[i]); string _title = HttpUtility.HtmlEncode(column.FilterByColumnCollection.GetKey(i)); if (selectedValue != null && selectedValue == _value) { dropdownbox.AppendFormat("<option selected=\"selected\" value=\"{0}\">{1}</option>", HttpUtility.HtmlEncode(column.FilterByColumnCollection[i]), _title); } else { dropdownbox.AppendFormat("<option value=\"{0}\">{1}</option>", HttpUtility.HtmlEncode(column.FilterByColumnCollection[i]), _title); } i++; } writer.Write(dropdownbox); writer.Write("</select> "); } else { if (grid.DatabaseConnectionType != DataBaseConnectionType.SqlConnection) { throw new GridException( string.Format("'FilterByColumn' property for 'DateTime' ({0}) columns are only supported by 'SqlConnection' connection strings.", column.ColumnId)); } writer.Write("<span style=\"white-space: nowrap;vertical-align:middle;\">"); string filter = ((WebGrid.DateTime)grid.MasterTable.Columns[column.ColumnId]).SearchFilter; if (string.IsNullOrEmpty(filter)) { StringBuilder s = new StringBuilder(string.Empty); s.AppendFormat( "<a class=\"wglinkfield\" href=\"?DateFilter={0}\">{1}</a>", grid.MasterTable.Columns[column.ColumnId].ColumnId, column.Grid.GetSystemMessage("DateTimeSearch")); writer.Write(s); } else { StringBuilder s = new StringBuilder(string.Empty); s.AppendFormat( "<a class=\"wglinkfield\" href=\"#\" onclick=\"javascript:WGdisableDateTimeSearch('{0}');\";return false;\">{1}</a>", column.ColumnId, column.Grid.GetSystemMessage("DateTimeSearchReset")); writer.Write(s); } // From date writer.Write("</span>"); } addcolumn.RenderEndTag(writer, "</th>"); } writer.Write("</tr>"); }