Esempio n. 1
0
        private static string _GetDetail(T boVM)
        {
            var editItems = new List <EditItemSpecification>();

            var boType = typeof(T);

            Attribute[] boVMAttributes  = Attribute.GetCustomAttributes(boType);
            var         editorAttribute = boVMAttributes.Where(n => n.GetType().Name == "EditorSpecification").FirstOrDefault() as EditorSpecification;

            PropertyInfo[] properties = boType.GetProperties();

            foreach (PropertyInfo pItem in properties)
            {
                var displayAttibute = Attribute.GetCustomAttributes(pItem).Where(n => n.GetType().Name == "DisplayAttribute").FirstOrDefault();
                if (displayAttibute != null)
                {
                    var editItem    = new EditItemSpecification();
                    var displayItem = displayAttibute as System.ComponentModel.DataAnnotations.DisplayAttribute;
                    var displayName = displayItem.Name;

                    var detailAtrribute = Attribute.GetCustomAttributes(pItem).Where(n => n.GetType().Name == "DetailItemSpecification").FirstOrDefault() as DetailItemSpecification;

                    if (detailAtrribute != null)
                    {
                        var itemValue = pItem.GetValue(boVM);
                        editItem.FieldName        = pItem.Name;
                        editItem.FieldDisplayName = displayName;
                        editItem.FieldEditContent = _GetDetailFieldContent(detailAtrribute.ItemType, itemValue);
                        //editItem.HorizontalZone=
                        editItems.Add(editItem);
                    }
                }
            }
            var maxLength  = (editItems.Max(x => x.FieldDisplayName.Length) + 1) * 16;
            var htmlString = new StringBuilder();

            htmlString.Append("<table style='width:100%'>");
            foreach (var item in editItems)
            {
                htmlString.Append("<tr>");
                htmlString.Append("<td style='width:" + maxLength + "px;text-align:right;vertical-align:top'>" + item.FieldDisplayName + ":</td><td>" + item.FieldEditContent + "</td>");
                htmlString.Append("</tr>");
            }
            htmlString.Append("</table>");


            return(htmlString.ToString());
        }
Esempio n. 2
0
        private static string _GetEditor(T boVM, List <ValidatorResult> vItems = null)
        {
            var keyValue  = "";
            var keyName   = "";
            var editItems = new List <EditItemSpecification>();
            var boType    = typeof(T);

            Attribute[] boVMAttributes  = Attribute.GetCustomAttributes(boType);
            var         editorAttribute = boVMAttributes.Where(n => n.GetType().Name == "EditorSpecification").FirstOrDefault() as EditorSpecification;

            PropertyInfo[] properties = boType.GetProperties();

            foreach (PropertyInfo pItem in properties)
            {
                var keyAttibute = Attribute.GetCustomAttributes(pItem).Where(n => n.GetType().Name == "KeyAttribute").FirstOrDefault();
                if (keyAttibute != null)
                {
                    keyValue = pItem.GetValue(boVM).ToString();
                    keyName  = pItem.Name;
                }

                var displayAttibute = Attribute.GetCustomAttributes(pItem).Where(n => n.GetType().Name == "DisplayAttribute").FirstOrDefault();
                if (displayAttibute != null)
                {
                    var editItem    = new EditItemSpecification();
                    var displayItem = displayAttibute as System.ComponentModel.DataAnnotations.DisplayAttribute;
                    var displayName = displayItem.Name;

                    var editAtrribute = Attribute.GetCustomAttributes(pItem).Where(n => n.GetType().Name == "EditorItemSpecification").FirstOrDefault() as EditorItemSpecification;

                    if (editAtrribute != null)
                    {
                        var itemValue = pItem.GetValue(boVM);
                        editItem.FieldName        = pItem.Name;
                        editItem.FieldDisplayName = displayName;
                        editItem.FieldEditContent = _GetEditFieldContent(editAtrribute.ItemType, itemValue, editItem.FieldName, boVM, vItems);
                        if (editAtrribute.ItemType == EditorItemType.Hidden)
                        {
                            editItem.FieldDisplayName = "Hidden";
                        }
                        editItem.HorizontalZone = editAtrribute.HorizontalZone;
                        editItem.DataType       = editAtrribute.ItemType;
                        editItems.Add(editItem);
                    }
                }
            }
            var maxLength  = (editItems.Max(x => x.FieldDisplayName.Length) + 1) * 16;
            var htmlString = new StringBuilder();

            htmlString.Append("<input type='hidden' id='" + keyName + "' name='" + keyName + "' value='" + keyValue + "' />");

            foreach (var item in editItems.Where(d => d.FieldDisplayName == "Hidden"))
            {
                htmlString.Append(item.FieldEditContent);
            }

            var uintSpan = "span" + (12 / editorAttribute.HorizontalZoneAmount);

            htmlString.Append("<div class='grid fluid'><div class='row'>");
            for (int i = 1; i < editorAttribute.HorizontalZoneAmount + 1; i++)
            {
                htmlString.Append("<div class='" + uintSpan + "'>");
                #region 单一输入区域的组件
                htmlString.Append("<table style='width:100%'>");
                foreach (var item in editItems.Where(d => d.FieldDisplayName != "Hidden"))
                {
                    if (item.HorizontalZone == i)
                    {
                        var v_Align  = "vertical-align:center";
                        var m_String = "margin-top:-10px";
                        if (item.DataType == EditorItemType.TextArea)
                        {
                            v_Align  = "vertical-align:top";
                            m_String = "";
                        }
                        htmlString.Append("<tr>");
                        htmlString.Append("<td style='width:" + maxLength + "px;text-align:right;" + v_Align + "'><div style='" + m_String + "'>" + item.FieldDisplayName + ":</div></td><td>" + item.FieldEditContent + "</td>");
                        var statusString = "<i class='icon-pencil'></>";

                        var errMessage = "";
                        if (vItems != null)
                        {
                            var eItems = vItems.Where(n => n.Name == item.FieldName);
                            if (eItems.Count() > 0)
                            {
                                foreach (var eItem in eItems)
                                {
                                    errMessage = errMessage + eItem.ErrorMessage + "\n";
                                }
                            }

                            if (!String.IsNullOrEmpty(errMessage))
                            {
                                statusString = "<i class='icon-cancel-2 fg-red'></i>";
                            }
                            else
                            {
                                statusString = "<i class='icon-checkmark fg-green'></i>";
                            }
                        }
                        htmlString.Append("<td style='width:10px;vertical-align:top'><div id='validStatus_" + item.FieldName + "'>" + statusString + "</div></td>");

                        htmlString.Append("</tr>");
                    }
                }
                htmlString.Append("</table>");
                #endregion
                htmlString.Append("</div>");
            }
            htmlString.Append("</div></div>");

            return(htmlString.ToString());
        }