コード例 #1
0
ファイル: ManyToMany.cs プロジェクト: yuva2achieve/WebGrid
        internal override void RenderEditView(WebGridHtmlWriter writer, RowCell cell)
        {
            StringBuilder sb = new StringBuilder();

            GetColumnPostBackData(cell);

            EnsureItems(cell);

            if (Items.Count > 0)
            {
                string strHeight = "5";
                if (HeightEditableColumn != Unit.Empty)
                {
                    strHeight = HeightEditableColumn.Value.ToString();
                }

                if (ManyToManyType == ManyToManyType.Multiselect)
                {
                    sb.AppendFormat(
                        "<select size={0} multiple=\"multiple\" class=\"wgeditfield\" id=\"{1}\" name=\"{1}\">",
                        strHeight,
                        cell.CellClientId);
                }
                else
                {
                    sb.Append("<table class=\"wgmanytomany\"><tr><td>");
                    m_Rowcounter = RecordsPerRow;
                }

                RenderDetailTree(sb, null, 0, cell);

                sb.Append(ManyToManyType == ManyToManyType.Multiselect ? "</select>" : "</tr></table>");
            }
            string displayText = sb.ToString();

            if (string.IsNullOrEmpty(ToolTipInput) == false)
            {
                displayText = Tooltip.Add(displayText, ToolTipInput);
            }
            EditHtml(displayText, writer, cell);
        }
コード例 #2
0
        internal override void RenderEditView(HtmlTextWriter writer, RowCell cell)
        {
            if (Table.m_GotData == false) // Data need to be recovered if CacheDatasourceStructure is active.
            {
                Table.GetData(true);
            }

            if (Identity || AllowEdit == false || (Grid.DisplayView == DisplayView.Grid && AllowEditInGrid == false))
            {
                RenderLabelView(writer, cell);
                return;
            }

            if (string.IsNullOrEmpty(ValueColumn))
            {
                throw new GridException(
                          String.Format(Table.m_Grid.GetSystemMessage("SystemMessage_ForeignkeyNoValueColumn"), Title));
            }

            StringBuilder s = new StringBuilder(string.Empty);

            switch (ForeignkeyType)
            {
            case ForeignkeyType.Select:
            case ForeignkeyType.SelectMenu:
            {
                StringBuilder eventScript = new StringBuilder(string.Empty);
                StringBuilder javascript  = new StringBuilder(string.Empty);
                if (AutoPostback || string.IsNullOrEmpty(ConfirmMessage) == false)
                {
                    eventScript = new StringBuilder(" onchange=\"");
                    if (string.IsNullOrEmpty(ConfirmMessage) == false)
                    {
                        eventScript.AppendFormat(" if(wgconfirm('{0}',this,'{1}')) ",
                                                 ConfirmMessage.Replace("'", "\\'"),
                                                 Grid.DialogTitle.Replace("'", "\\'"));
                    }
                    string link = Grid.EnableCallBack && !ForcePostBack
                                              ? Asynchronous.GetCallbackEventReference(Grid,
                                                                                       string.Format(
                                                                                           "ElementPostBack!{0}!{1}",
                                                                                           ColumnId,
                                                                                           cell.Row.PrimaryKeyValues),
                                                                                       false,
                                                                                       string.Empty,
                                                                                       string.Empty)
                                              : Grid.Page.ClientScript.GetPostBackEventReference(Grid,
                                                                                                 string.Format(
                                                                                                     "ElementPostBack!{0}!{1}",
                                                                                                     ColumnId,
                                                                                                     cell.Row.
                                                                                                     PrimaryKeyValues));

                    eventScript.AppendFormat("{0}\"", link);
                }

                StringBuilder onblur = new StringBuilder(" onblur=\"");

                if (Grid.ColumnChangedColour != Color.Empty)
                {
                    onblur.AppendFormat("isChanged(this,'{0}');", Grid.ColorToHtml(Grid.ColumnChangedColour));
                }
                onblur.Append("\"");
                javascript.Append(onblur);
                s.AppendFormat("<select {0} class=\"wgeditfield wgselectbox {4}\" id=\"{1}\" name=\"{1}\" {2} {3}>",
                               javascript, cell.CellClientId, eventScript, Attributes, CssClass);
                if (m_Foreignkeytype == ForeignkeyType.SelectMenu && (Grid.Scripts == null || !Grid.Scripts.DisableSelectMenu))
                {
                    if (SelectMenuWidth > 0)
                    {
                        Grid.AddClientScript(writer,
                                             string.Format(
                                                 "$(document).ready(function() {{$('#{0}').selectmenu({{maxHeight: {2},style:'dropdown',width: {1}}});}});",
                                                 cell.CellClientId, SelectMenuWidth, SelectMenuMaxHeight));
                    }
                    else
                    {
                        Grid.AddClientScript(writer,
                                             string.Format(
                                                 "$(document).ready(function() {{$('#{0}').selectmenu({{maxHeight: {1},style:'dropdown'}});}});",
                                                 cell.CellClientId, SelectMenuMaxHeight));
                    }
                }

                if (Table.Rows.Count == 0 && NullText == null)
                {
                    NullText = "No data available.";
                }

                if (NullText != null)
                {
                    s.AppendFormat("<option value=\"{1}\">{0}</option>", NullText, string.Empty);
                }

                //CreateRows(Grid,tree,null,0);

                s.Append(CreateSelectRows(TreeParentId != null, null, 0, cell));
                s.Append("</select>");
            }
            break;

            case ForeignkeyType.Radiobuttons:
                m_IsFormElement = false;
                m_Rowcounter    = RecordsPerRow;
                s.AppendFormat("<table class=\"wgradiobuttons {1}\"><tr><td>{0}</td></tr></table>",
                               CreateRadioButtons((TreeParentId != null), null, 0, cell), CssClass);
                break;
            }

            if (string.IsNullOrEmpty(ToolTipInput) == false)
            {
                s = new StringBuilder(Tooltip.Add(s.ToString(), ToolTipInput));
            }

            EditHtml(s.ToString(), writer, cell);
        }
コード例 #3
0
ファイル: Text.cs プロジェクト: yuva2achieve/WebGrid
        internal override void RenderEditView(WebGridHtmlWriter writer, RowCell cell)
        {
            if (Identity || AllowEdit == false || (Grid.DisplayView == DisplayView.Grid && AllowEditInGrid == false))
            {
                RenderLabelView(writer, cell);
                return;
            }

            string uniqueID = cell.CellClientId;

            GetColumnPostBackData(cell);

            if (IsHtml)
            {
                EditHtml(
                    !Grid.IsDesignTime
                        ? DrawHtml(uniqueID, writer, Grid, cell)
                        : HttpUtility.HtmlEncode("<HTML EDITOR DESIGN TIME>"), writer, cell);
                return;
            }
            string s;
            string theValueToShow = DisplayText(cell);

            /*if(TheValueToShow == null)
             *  TheValueToShow = Value;*/

            if (IsUrl && string.IsNullOrEmpty(theValueToShow))
            {
                theValueToShow = HTTPCONST;
            }

            StringBuilder cssstyle = new StringBuilder("style=\"");

            theValueToShow = HttpUtility.HtmlEncode(theValueToShow);

            string        size       = string.Empty;
            string        type       = "text";
            StringBuilder javascript = new StringBuilder(string.Empty);

            if (WidthEditableColumn != Unit.Empty)
            {
                cssstyle.AppendFormat("width:{0}; ", WidthEditableColumn);
            }
            if (HeightEditableColumn != Unit.Empty)
            {
                cssstyle.AppendFormat("height:{0}; ", HeightEditableColumn);
            }
            if (MaxSize > 0)
            {
                size = string.Format("maxlength=\"{0}\" ", MaxSize);
            }
            if (IsPassword)
            {
                type = "password";
            }
            StringBuilder onblur = new StringBuilder(" onblur=\"");

            if (Grid.InputHighLight != Color.Empty)
            {
                javascript.AppendFormat(
                    " onfocus=\"this.accessKey = style.backgroundColor;style.backgroundColor='{0}';\"",
                    Grid.ColorToHtml(Grid.InputHighLight));
                onblur.Append("style.backgroundColor=this.accessKey;");
            }
            if (Grid.ColumnChangedColour != Color.Empty)
            {
                onblur.AppendFormat("isChanged(this,'{0}');", Grid.ColorToHtml(Grid.ColumnChangedColour));
            }

            if (AutoPostback)
            {
                onblur.Append("if(hasChanged(this))");
                onblur.Append(Grid.EnableCallBack && !ForcePostBack ? Asynchronous.GetCallbackEventReference(Grid, string.Format("ElementPostBack!{0}!{1}",
                                                                                                                                 ColumnId, cell.Row.PrimaryKeyValues), false,
                                                                                                             string.Empty, string.Empty) : Grid.Page.ClientScript.GetPostBackEventReference(Grid,
                                                                                                                                                                                            string.Format(
                                                                                                                                                                                                "ElementPostBack!{0}!{1}", ColumnId, cell.Row.PrimaryKeyValues)));
            }
            onblur.Append("\"");

            javascript.Append(onblur);

            string mask = null;

            if (!DisableMaskedInput && GenerateColumnMask != null)
            {
                string maskId = string.Format("{0}_{1}", Grid.ID, ColumnId);
                if (!Grid.MaskedColumns.ContainsKey(maskId))
                {
                    Grid.MaskedColumns.Add(maskId, GenerateColumnMask);
                }

                mask = string.Format(" alt=\"{0}\"", maskId);
            }

            cssstyle.Append("\"");
            if (HeightEditableColumn == Unit.Empty)
            {
                s =
                    string.Format(
                        "<input {0} {1} {6}{7} type=\"{2}\" class=\"wgeditfield\" {3} value=\"{4}\" id=\"{5}\" name=\"{5}\"/>",
                        javascript, cssstyle, type, size, theValueToShow, uniqueID, Attributes, mask);
            }
            else
            {
                s =
                    string.Format(
                        "<textarea  rows=\"1\" cols=\"1\" {0} {1} class=\"wgeditfield\" id=\"{2}\" name=\"{3}\" {4}>",
                        javascript, cssstyle, uniqueID, uniqueID, Attributes);
                if (theValueToShow != null)
                {
                    s += theValueToShow;
                }
                s += "</textarea>";
            }

            if (string.IsNullOrEmpty(ToolTipInput) == false)
            {
                s = Tooltip.Add(s, ToolTipInput);
            }

            EditHtml(s, writer, cell);
        }
コード例 #4
0
ファイル: Checkbox.cs プロジェクト: lanthonyneville/WebGrid
        // 2005.01.09 - jorn -  String.Compare, string.Length
        // 2005.01.05 - Jorn -  Added check to see if there actually is a checkbox on "previous page".
        //                        Need to add a hidden field since checkbox "returns null" both for unchecked and non-existing
        internal void RenderDetail(bool enabled, WebGridHtmlWriter writer, RowCell cell)
        {
            if (AllowEdit == false || (Grid.DisplayView == DisplayView.Grid && AllowEditInGrid == false))
            {
                enabled = false;
            }

            string       uniqueId       = cell.CellClientId;
            string       strValue       = DisplayText(cell);
            const string checkedValue   = TrueValue;
            const string uncheckedValue = FalseValue;

            StringBuilder sb;

            if (String.Compare(strValue, checkedValue, true) == 0 && CheckedAlias != null && enabled == false)
            {
                sb = new StringBuilder(CheckedAlias);
            }
            else if (String.Compare(strValue, uncheckedValue, true) == 0 && UncheckedAlias != null &&
                     enabled == false)
            {
                sb = new StringBuilder(UncheckedAlias);
            }
            else
            {
                string bitchecked = string.Empty;
                string bitEnabled = string.Empty;
                if (String.Compare(strValue, checkedValue, true) == 0)
                {
                    bitchecked = " checked=\"checked\"";
                }
                if (enabled == false)
                {
                    bitEnabled = " disabled=\"disabled\"";
                }

                StringBuilder javascript = new StringBuilder(string.Empty);
                StringBuilder onblur     = new StringBuilder(" onblur=\"");
                if (Grid.InputHighLight != Color.Empty)
                {
                    javascript.AppendFormat(
                        " onfocus=\"this.accessKey = this.style.backgroundColor;this.style.backgroundColor='{0}';\"",
                        Grid.ColorToHtml(Grid.InputHighLight));
                    onblur.Append("this.style.backgroundColor=this.accessKey;");
                }
                if (Grid.ColumnChangedColour != Color.Empty)
                {
                    onblur.AppendFormat("isChanged(this,'{0}');", Grid.ColorToHtml(Grid.ColumnChangedColour));
                }
                onblur.Append("\"");

                if (AutoPostback || string.IsNullOrEmpty(ConfirmMessage) == false)
                {
                    StringBuilder eventScript = new StringBuilder(" onclick=\"");
                    if (string.IsNullOrEmpty(ConfirmMessage) == false)
                    {
                        eventScript.AppendFormat(" if(wgconfirm('{0}',this,'{1}')) ", ConfirmMessage.Replace("'", "\\'"), Grid.DialogTitle.Replace("'", "\\'"));
                    }
                    string link = Grid.EnableCallBack && !ForcePostBack?Asynchronous.GetCallbackEventReference(Grid,
                                                                                                               string.Format("ElementPostBack!{0}!{1}",
                                                                                                                             ColumnId, cell.Row.PrimaryKeyValues), false,
                                                                                                               string.Empty, string.Empty) : Grid.Page.ClientScript.GetPostBackEventReference(Grid,
                                                                                                                                                                                              string.Format(
                                                                                                                                                                                                  "ElementPostBack!{0}!{1}", ColumnId, cell.Row.PrimaryKeyValues));

                    eventScript.AppendFormat("{0}\"", link);

                    javascript.Append(eventScript);
                }
                javascript.Append(onblur);
                sb =
                    new StringBuilder(
                        string.Format(
                            "<input {0} type=\"checkbox\" {1} {2} {4}  id=\"cb_{3}\" name=\"{3}\" value=\"1\"/>",
                            javascript, bitchecked, bitEnabled, uniqueId, Attributes));
                if (string.IsNullOrEmpty(m_Displaylabel) == false)
                {
                    sb.AppendFormat(
                        "<label class=\"wglabel\" id=\"label_{0}\" for=\"cb_{0}\">{1}</label>", uniqueId, m_Displaylabel);
                }

                if (enabled)
                {
                    writer.Write("<input type=\"hidden\" id=\"{0}_cb\" name=\"{0}_cb\" value=\"{1}\" />",
                                 uniqueId, checkedValue);
                }
            }

            if (string.IsNullOrEmpty(ToolTipInput) == false)
            {
                sb = new StringBuilder(Tooltip.Add(sb.ToString(), ToolTipInput));
            }

            EditHtml(sb.ToString(), writer, cell);
        }
コード例 #5
0
        internal override void RenderEditView(WebGridHtmlWriter writer, RowCell cell)
        {
            if (AllowEdit == false || (Grid.DisplayView == DisplayView.Grid && AllowEditInGrid == false) ||
                !Grid.GotHttpContext)
            {
                RenderLabelView(writer, cell);
                return;
            }

            StringBuilder s          = new StringBuilder(string.Empty);
            StringBuilder javascript = new StringBuilder(string.Empty);

            s.Append(FileSource(false, cell));

            StringBuilder onblur = new StringBuilder(" onblur=\"");

            if (Grid.InputHighLight != Color.Empty)
            {
                javascript.AppendFormat(
                    " onfocus=\"accessKey = style.backgroundColor;style.backgroundColor='{0}';\"",
                    Grid.ColorToHtml(Grid.InputHighLight));
                onblur.Append("style.backgroundColor=accessKey;");
            }
            if (Grid.ColumnChangedColour != Color.Empty)
            {
                onblur.AppendFormat("isChanged(this,'{0}');", Grid.ColorToHtml(Grid.ColumnChangedColour));
            }

            onblur.Append("\"");
            javascript.Append(onblur);

            s.AppendFormat("<br/><input {0} {2} type=\"file\" class=\"wgeditfield\"  name=\"{1}\" id=\"{1}\"/>",
                           javascript, cell.CellClientId, Attributes);

            if (AllowEmpty && Required == false && Grid.InternalId != null && ((cell.Value != null)
                                                                               ||
                                                                               (FileNameColumn != null &&
                                                                                (cell.Value != null))))
            {
                s.AppendFormat(
                    "<br/><input class=\"wglinkfield\" name=\"{0}_delete\" id=\"{0}_delete\"  value=\"TRUE\" type=\"checkbox\" /><label class=\"wgnowrap wglabel\" id=\"label_{0}\" for=\"{0}_delete\">{1}</label>",
                    cell.CellClientId,
                    Grid.GetSystemMessage("RemoveImage"));
            }

            if (Grid.FindForm != null)
            {
                if (Grid.EnableCallBack)
                {
                    if (Grid.FindForm.Enctype.Equals("multipart/form-data", StringComparison.OrdinalIgnoreCase) ==
                        false)
                    {
                        Manager.AddScriptForClientSideEval(string.Format("document.getElementById(\"{0}\").encoding = \"multipart/form-data\";", Grid.FindForm.ClientID));
                    }
                }
                else
                {
                    Grid.FindForm.Enctype = "multipart/form-data";
                }
            }
            else
            {
                throw new GridException(
                          string.Format("HtmlForm is not found for grid '{0}' and column '{1}'", Grid.ID, ColumnId));
            }
            if (string.IsNullOrEmpty(ToolTipInput) == false)
            {
                s = new StringBuilder(Tooltip.Add(s.ToString(), ToolTipInput));
            }

            EditHtml(s.ToString(), writer, cell);
        }
コード例 #6
0
ファイル: Rendering.cs プロジェクト: yuva2achieve/WebGrid
        internal static void RenderDetail(ref Grid grid, ref WebGridHtmlWriter writer)
        {
            string width = grid.Width.IsEmpty == false?grid.Width.ToString() : "100%";

            /* cellpadding and cellspacing are fixed because CSS does not support similar behavior*/
            if (grid.IsUsingJQueryUICSSFramework)
            {
                writer.Write( //ui-helper-reset
                    "<table width=\"{0}\" class=\"ui-widget-content  wgmaindetail\" cellspacing=\"0\" cellpadding=\"0\">", width);
            }
            else
            {
                writer.Write("<table width=\"{0}\" class=\"wgmaindetail\" cellspacing=\"0\" cellpadding=\"0\">", width);
            }

            int[] sortedColumns = grid.VisibleSortedColumns;

            int columnWidth    = -1;
            int allRowsColumns = 0;
            int ant            = 0;

            bool firstvisiblecolumn = true;

            bool editablecolumns = grid.m_Forceeditablecolumns;

            for (int i = 0; i < sortedColumns.Length; i++)
            {
                ant += 2;
                // if( Grid.BasicDetailLayout )
                //	 ant--;
                if (grid.DisplayRequiredColumn)
                {
                    ant++;
                }

                if (ant > columnWidth)
                {
                    columnWidth = ant;
                }

                Column c = grid.MasterTable.Columns[sortedColumns[i]];
                if (c.UseAllRows)
                {
                    allRowsColumns++;
                }
                if (c.IsVisible == false)
                {
                    continue;
                }
                if (editablecolumns == false && c.AllowEdit)
                {
                    editablecolumns = true;
                }
                if (firstvisiblecolumn)
                {
                    firstvisiblecolumn = false;
                    continue;
                }
                if (c.NewRowInDetail)
                {
                    ant = 0;
                }
            }
            // Create head
            CreateTitle(grid, DisplayView.Detail, writer, sortedColumns, columnWidth, "td");

            if ((grid.CollapseIfSlaveGrid && grid.ActiveMenuSlaveGrid != null) || grid.CollapsedGrid)
            {
                writer.Write("</table>");
                return;
            }
            // Create toolbar
            if (string.IsNullOrEmpty(grid.GetToolbarHtml(ToolbarType.ToolbarDetailTop)) == false)
            {
                if (grid.IsUsingJQueryUICSSFramework)
                {
                    writer.Write(
                        "<tr class=\"ui-widget-header wgrow\"><td class=\"wgtoolbardetail\" colspan=\"{0}\">",
                        columnWidth);
                }
                else
                {
                    writer.Write(
                        "<tr class=\"wgrow\"><td class=\"wgtoolbardetail\" colspan=\"{0}\">",
                        columnWidth);
                }
                CreateDetailToolbar(grid.GetToolbarHtml(ToolbarType.ToolbarDetailTop), writer, grid, editablecolumns);
                writer.Write("</td></tr>");
            }
            int antcols = 0;

            if (allRowsColumns > 0)
            {
                writer.Write(
                    "<tr><td colspan=\"{0}\"><table class=\"wgrowspan\"><tr valign=\"top\"><td><table class=\"wgrowspan\">",
                    columnWidth);
            }
            grid.MasterTable.Rows[0].RowIndex = -1;
            for (int i = 0; i < sortedColumns.Length; i++)
            {
                Column column = grid.MasterTable.Rows[0] != null ? grid.MasterTable.Columns[sortedColumns[i]] : grid.MasterTable.Columns[sortedColumns[i]];
                if (column.UseAllRows && i > 0)
                {
                    writer.Write("</table></td><td><table class=\"wgrowspan\">");
                }
                if (i == 0 || (i < sortedColumns.Length && column.NewRowInDetail))
                {
                    antcols = 0;
                    writer.Write("<tr class=\"wgrow\">");
                }
                if (!column.HideDetailTitle)
                {
                    ColumnHeader columnName = new ColumnHeader
                    {
                        m_VAlign       = column.EditVAlign,
                        m_Align        = column.EditAlignTitle,
                        m_ColumnWidth  = column.WidthColumnTitle,
                        m_Class        = string.Format("{0} wgdetailheader", column.CssClassTitle),
                        m_GridRowCount = (-1),
                        m_GridId       = grid.ID
                    };
                    if (columnName.m_ColumnWidth == Unit.Empty)
                    {
                        int columnwidth = column.Title.Length * 12;

                        if (columnwidth > 140)
                        {
                            columnwidth = 140;
                        }
                        columnName.m_ColumnWidth = Unit.Pixel(columnwidth);
                    }
                    columnName.RenderBeginTag(writer, column, null, "<td");

                    if (string.IsNullOrEmpty(column.ToolTipEditTitle))
                    {
                        writer.Write(column.Title);
                    }
                    else
                    {
                        writer.Write(Tooltip.Add(column.Title, column.ToolTipEditTitle));
                    }

                    antcols++;

                    if (grid.BasicDetailLayout == false)
                    {
                        columnName.RenderEndTag(writer, "</td>");
                    }

                    if (grid.DisplayRequiredColumn)
                    {
                        antcols++;
                        ColumnHeader requiredColumn = new ColumnHeader
                        {
                            m_Class =
                                string.Format("wgrequiredcolumn {0}", column.CssClassTitle),
                            m_ColumnWidth = Unit.Pixel(1),
                            m_VAlign      =
                                (column.HeightEditableColumn.IsEmpty
                                                             ? column.EditVAlign
                                                             : VerticalPosition.top)
                        };

                        requiredColumn.RenderBeginTag(writer, column, null, "<td");

                        if (column.Required && column.AllowEdit)
                        {
                            writer.Write(@"<span title=""{0}"" class=""ui-icon ui-icon-info""/>",
                                         grid.GetSystemMessage("Required"));
                        }
                        else
                        {
                            writer.Write("&nbsp;");
                        }

                        requiredColumn.RenderEndTag(writer, "</td>");
                    }
                }
                antcols++;
                if ((i == sortedColumns.Length - 1 || (i + 1 < sortedColumns.Length && grid[sortedColumns[i + 1]].NewRowInDetail)) && antcols < columnWidth)
                {
                    grid.Rows[0][column.ColumnId].InternalCellSpan += columnWidth - antcols;
                }

                //   column.Row = grid.MasterTable.Rows[0];
                column.Render(writer, grid.Rows[0][column.ColumnId]);

                if (i == sortedColumns.Length - 1 ||
                    (i + 1 < sortedColumns.Length &&
                     grid[sortedColumns[i + 1]].NewRowInDetail))
                {
                    writer.Write("</tr>");
                }

                if (column.UseAllRows)
                {
                    if (i + 1 < sortedColumns.Length)
                    {
                        writer.Write("</table></td><td><table class=\"wgrowspan\">");
                    }
                    else
                    {
                        writer.Write("</table>");
                    }
                }
                else if (allRowsColumns > 0 && i + 1 == sortedColumns.Length)
                {
                    writer.Write("</table>");
                }
            }
            if (allRowsColumns > 0)
            {
                writer.Write("</td></tr></table></td></tr>");
            }

            // Create tail
            if (string.IsNullOrEmpty(grid.GetToolbarHtml(ToolbarType.ToolbarDetailBottom)) == false)
            {
                if (grid.IsUsingJQueryUICSSFramework)
                {
                    writer.Write(
                        "<tr class=\"ui-widget-header wgrow\"><td class=\"wgtoolbardetail\" colspan=\"{0}\">",
                        columnWidth);
                }
                else
                {
                    writer.Write(
                        "<tr class=\"wgrow\"><td class=\"wgtoolbardetail\" colspan=\"{0}\">",
                        columnWidth);
                }
                CreateDetailToolbar(grid.GetToolbarHtml(ToolbarType.ToolbarDetailBottom), writer, grid, editablecolumns);
                writer.Write("</td></tr>");
            }

            writer.Write("</table>");
        }
コード例 #7
0
ファイル: Rendering.cs プロジェクト: yuva2achieve/WebGrid
        internal void RenderGrid(ref Grid grid, ref WebGridHtmlWriter writer)
        {
            string width = grid.Width.IsEmpty == false?grid.Width.ToString() : "100%";

            /* cellpadding and cellspacing are fixed because CSS does not support similar behavior*/
            if (grid.IsUsingJQueryUICSSFramework)
            {
                writer.Write(
                    "<table width=\"{0}\" id=\"{1}\" class=\"ui-widget-content\"  cellpadding=\"0\" cellspacing=\"0\">",
                    width, grid.ID);
            }
            else
            {
                writer.Write(
                    "<table width=\"{0}\" id=\"{1}\" cellpadding=\"0\" cellspacing=\"0\">",
                    width, grid.ID);
            }
            int[] sortedColumns = grid.VisibleSortedColumns;

            if (grid.RecordsPerRow == 1)
            {
                //extra table is to get rid of css background glitch in ie and safari.
                if (grid.IsUsingJQueryUICSSFramework)
                {
                    writer.Write("<thead class=\"ui-widget-header wgthead\">");
                }
                else
                {
                    writer.Write("<thead class=\"wgthead\">");
                }
            }

            CreateTitle(grid, DisplayView.Grid, writer, sortedColumns, 0, "th");

            if ((grid.CollapseIfSlaveGrid && grid.ActiveMenuSlaveGrid != null) || grid.CollapsedGrid)
            {
                if (grid.RecordsPerRow == 1)
                {
                    writer.Write("</thead></table>");
                }
                else
                {
                    writer.Write("</table>");
                }
                return;
            }
            if (grid.MasterTable.Columns.Primarykeys == null)
            {
                grid.AllowDelete = false;
                grid.AllowEdit   = false;
                grid.AllowNew    = false;
                grid.AllowCopy   = false;
            }
            if (string.IsNullOrEmpty(grid.GetToolbarHtml(ToolbarType.ToolbarGridTop)) == false)
            {
                if (grid.IsUsingJQueryUICSSFramework)
                {
                    writer.Write("<tr class=\"ui-widget-header wgrow\"><td colspan=\"{0}\" class=\"wgtoolbargrid\">",
                                 sortedColumns.Length);
                }
                else
                {
                    writer.Write("<tr class=\"wgrow\"><td colspan=\"{0}\" class=\"wgtoolbargrid\">",
                                 sortedColumns.Length);
                }
                CreateGridToolbar(grid.GetToolbarHtml(ToolbarType.ToolbarGridTop), writer, grid);
                writer.Write("</td></tr>");
            }
            // Show Header
            bool FilterByColumns = grid.MasterTable.Columns.Exists(delegate(Column column)
                                                                   { return(column.FilterByColumnCollection != null && column.FilterByColumnCollection.Count > 0); });

            // Create column filter
            if (FilterByColumns)
            {
                CreateFilterByColumns(grid, writer, sortedColumns);
            }
            // RENDER ROWS

            if (grid.DisplayHeader)
            {
                // CREATE HEADING
                writer.Write("<tr valign=\"bottom\" class=\"wgrow wggridheader\" id=\"{0}r0\">", grid.ID);

                for (int ii = 0; ii < sortedColumns.Length; ii++)
                {
                    Column column = grid.MasterTable.Columns[sortedColumns[ii]];

                    ColumnHeader addcolumn = new ColumnHeader
                    {
                        m_Class        = string.Format("{0} wgheadercell", column.CssClassTitle),
                        m_Align        = column.GridAlign,
                        m_VAlign       = VerticalPosition.bottom,
                        m_GridRowCount = (-1),
                        m_GridId       = grid.ID
                    };
                    if ((column.ColumnType == ColumnType.SystemColumn &&
                         ((WebGrid.SystemColumn)column).SystemColumnType == SystemColumn.SpacingColumn) ==
                        false)
                    {
                        if (column.WidthColumnHeaderTitle == Unit.Empty)
                        {
                            switch (column.ColumnType)
                            {
                            case ColumnType.SystemColumn:
                                addcolumn.m_ColumnWidth = Unit.Percentage(1);
                                break;

                            case ColumnType.Decimal:
                            case ColumnType.Number:
                            {
                                int columnwidth = column.Title.Length * 12;

                                if (columnwidth > 200)
                                {
                                    columnwidth = 200;
                                }

                                addcolumn.m_ColumnWidth = Unit.Pixel(columnwidth);
                            }
                            break;
                            }
                            //                                else
                            //                                    addcolumn.ColumnWidth = Unit.Pixel(100);
                        }
                        else
                        {
                            addcolumn.m_ColumnWidth = column.WidthColumnHeaderTitle;
                        }
                        grid[column.ColumnId].WidthColumnHeaderTitle = addcolumn.m_ColumnWidth;
                    }
                    addcolumn.RenderBeginTag(writer, column, null, "<th");
                    // writer.Write("<div class=\"wgheadercell\" id=\"{0}h{1}\">", grid.ID, column.ColumnId);

                    if (column.UseAllRows &&
                        (grid.SelectableRows || grid.RowHighLight != Color.Empty))
                    {
                        grid.RowHighLight   = Color.Empty;
                        grid.SelectableRows = false;
                    }

                    if (column.IsInDataSource && column.Sortable)
                    {
                        string[] arrayParams = new string[1];
                        if (grid.MasterTable.DataSource != null)
                        {
                            arrayParams[0] = column.ColumnId;
                        }
                        else /*if (column.ColumnType == ColumnType.Foreignkey || !string.IsNullOrEmpty(grid.Sql))*/
                        {
                            arrayParams[0] = Interface.BuildTableElement(true, column.m_Table.DataSourceId, column.ColumnId);
                        }

                        /*else
                         * {
                         *  Foreignkey fk = (Foreignkey) column;
                         *  arrayParams[0] =
                         *      Foreignkey.BuildDisplayTextSql(
                         *          string.Format(" [_pk{0}_{1}].", sortedColumns[ii], fk.DataSourceId),
                         *          fk.ValueColumn, string.Empty,
                         *          true, fk.Table);
                         *  if (fk.Table.DataSource != null)
                         *      arrayParams[0] = fk.ColumnId;
                         * }*/
                        string columnHeaderText = column.HeaderText;

                        if (string.IsNullOrEmpty(column.ToolTipGridHeaderText) == false)
                        {
                            columnHeaderText = Tooltip.Add(columnHeaderText, column.ToolTipGridHeaderText);
                        }



                        StringBuilder hyperlink;
                        if (!grid.AllowSort)
                        {
                            hyperlink = new StringBuilder(
                                String.Format("<span  class=\"{1}\">{0}</span>",
                                              columnHeaderText, null));
                        }
                        else
                        {
                            string sortimage = string.Empty;
                            // Up/down images
                            if (grid.DisplaySortIcons &&
                                grid.MasterTable.OrderBySortList[arrayParams[0]] != null)
                            {
                                /*StringBuilder img = new StringBuilder("sort-");
                                 * if (grid.MasterTable.OrderBySortList[arrayParams[0]].m_Desc)
                                 *  img.Append("down");
                                 * else
                                 *  img.Append("up");
                                 * if (grid.MasterTable.OrderBySortList[arrayParams[0]].m_DisplayIndex != 0)
                                 *  img.Append("2");
                                 * img.Append(".gif");
                                 *
                                 * string sort =
                                 *  string.Format("&nbsp;<img style=\" border:0px\" alt=\"{0}\" src=\"{1}{2}\" />",
                                 *                grid.GetSystemMessage("SortIcon"), grid.ImagePath, img);*/
                                if (grid.MasterTable.OrderBySortList[arrayParams[0]].m_Desc)
                                {
                                    sortimage = string.Format(
                                        @"<span title=""{0}"" style=""float:left""  class=""ui-icon ui-icon-triangle-1-s""/>",
                                        grid.GetSystemMessage("SortIcon"));
                                }
                                else
                                {
                                    sortimage = string.Format(
                                        @"<span title=""{0}"" style=""float:left"" class=""ui-icon ui-icon-triangle-1-n""/>",
                                        grid.GetSystemMessage("SortIcon"));
                                }
                            }
                            hyperlink = new StringBuilder("<table cellspacing=\"0\" cellpadding=\"0\"><tr><td>");
                            hyperlink.Append(new StringBuilder(
                                                 Buttons.Anchor(grid, columnHeaderText,
                                                                "ColumnHeaderClick", arrayParams, null,
                                                                null, null, null, false)));
                            hyperlink.Append("</td><td>");
                            hyperlink.Append(sortimage);
                            hyperlink.Append("</td></tr></table>");
                        }
                        if (grid.NonBreakingHeaders)
                        {
                            hyperlink.Insert(0, "<span class=\"wgnowrap\">");
                            hyperlink.Append("</span>");
                        }
                        writer.Write(hyperlink.ToString());
                    }
                    else
                    {
                        string css = string.Empty;
                        if (grid.NonBreakingHeaders)
                        {
                            css += " wgnowrap";
                        }
                        writer.Write("<span class=\"{0}\">{1}</span>", css, column.HeaderText);
                    }

                    addcolumn.RenderEndTag(writer, "</th>");
                }
                writer.Write("</tr>");
                // FINISH CREATE HEADING
            }
            if (grid.RecordsPerRow == 1)
            {
                writer.Write("</thead>");
            }

            bool tree = !string.IsNullOrEmpty(grid.TreeParentId);

            writer.Write(grid.BeforeRowsEvent());
            if (grid.Trace.IsTracing)
            {
                grid.Trace.Trace("Started Rendering Rows ({0})", grid.ID);
            }
            writer.Write("<tbody>");

            CreateRows(grid, tree, null, 0, writer, sortedColumns, 0);

            if (grid.RecordsPerRow == 1)
            {
                CreateTotalSummary(grid, writer, sortedColumns);
            }

            if (grid.Trace.IsTracing)
            {
                grid.Trace.Trace("Stopped Rendering Rows ({0}).", grid.ID);
            }
            writer.Write(grid.AfterRowsEvent());

            writer.Write("</tbody>");

            if (!string.IsNullOrEmpty(grid.GetToolbarHtml(ToolbarType.ToolbarGridBottom)))
            {
                writer.Write("<tfoot>");
                if (grid.IsUsingJQueryUICSSFramework)
                {
                    writer.Write("<tr class=\"ui-widget-header wgrow\"><td colspan=\"{0}\" class=\"wgtoolbargrid\">",
                                 sortedColumns.Length);
                }
                else
                {
                    writer.Write("<tr class=\"wgrow\"><td colspan=\"{0}\" class=\"wgtoolbargrid\">",
                                 sortedColumns.Length);
                }
                CreateGridToolbar(grid.GetToolbarHtml(ToolbarType.ToolbarGridBottom), writer, grid);
                writer.Write("</td></tr></tfoot>");
            }
            writer.Write("</table>");

            if (grid.Page != null)
            {
                if (grid.EnableCallBack)
                {
                    writer.Write("<input type=\"hidden\" id=\"{0}checkboxes\" name=\"{0}checkboxes\" value=\"{1}\" />",
                                 grid.ClientID, m_Checkboxlist.ToString());
                }
                else
                {
                    grid.Page.ClientScript.RegisterHiddenField(string.Format("{0}checkboxes", grid.ClientID),
                                                               m_Checkboxlist.ToString());
                }
            }
        }