public ArtDevField CreateFieldCurrency(string Name) { SPFieldCurrency Field = NewOrRefCurrency(Name); ArtDevField ArtDevField = new ArtDevField(Field); return(ArtDevField); }
public SPFieldCurrency NewOrRefCurrency(string Name) { string CurrencyName = this.Web().Fields.ContainsField(Name) ? Name : this.Web().Fields.Add(Name, SPFieldType.Currency, false); SPFieldCurrency CurrencyField = (SPFieldCurrency)this.Web().Fields.GetFieldByInternalName(CurrencyName); CurrencyField.Group = this.columnGroup; return(CurrencyField); }
public static string FormatValueAsText(this SPFieldCalculated calcField, string rawValue) { string result = rawValue; CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture; switch (calcField.OutputType) { case SPFieldType.Number: try { var numberValue = Convert.ToDouble(rawValue); result = SPFieldNumber.GetFieldValueAsText(numberValue, currentCulture, calcField.ShowAsPercentage, calcField.DisplayFormat); } catch { result = string.Empty; } break; case SPFieldType.DateTime: try { var dateValue = Convert.ToDateTime(rawValue); result = SPFieldDateTime.GetFieldValueAsText(dateValue, SPContext.Current.Web, calcField.DateFormat == SPDateTimeFieldFormatType.DateTime ? SPDateFormat.DateTime : SPDateFormat.DateOnly); } catch { result = string.Empty; } break; case SPFieldType.Currency: try { double data = Convert.ToDouble(rawValue, CultureInfo.InvariantCulture); result = SPFieldCurrency.GetFieldValueAsText(data, currentCulture, calcField.CurrencyLocaleId, calcField.DisplayFormat); } catch { result = string.Empty; } break; case SPFieldType.Boolean: try { result = Convert.ToBoolean(Convert.ToByte(rawValue)).ToString(); } catch { } break; default: break; } return(result); }
private void SetListFormFields(Control canvas) { List <DesignDataSource> sources = new List <DesignDataSource>(); if (!string.IsNullOrEmpty(DataSourcesData)) { sources = Utilities.DeserializeObject <List <DesignDataSource> >(DataSourcesData); } if (inEditMode) { } SPSecurity.RunWithElevatedPrivileges(delegate() { SPSite site = SPContext.Current.Site; foreach (DesignDataSource source in sources) { SPWeb web = site.OpenWeb(new Guid(source.WebId)); SPList list = web.Lists[new Guid(source.ListId)]; SPView view = list.GetView(new Guid(source.ViewId)); SPViewFieldCollection viewfields = view.ViewFields; foreach (var viewfield in viewfields) { if (list.Fields.ContainsField(viewfield.ToString())) { try { string fieldname = viewfield.ToString().Replace("_x0020_", " "); SPField field = list.Fields.GetField(fieldname); FormField fld = new FormField(); if (inEditMode && Page.IsPostBack) //if (DesignMode)// && Page.IsPostBack) { fld.ControlMode = SPControlMode.Display; } else { fld.ControlMode = SPControlMode.New; } //fld.ControlMode = SPControlMode.New; fld.ListId = list.ID; fld.FieldName = field.InternalName; fld.ID = field.InternalName; fld.DisableInputFieldLabel = true; fld.InDesign = inEditMode; fld.IsValid = inEditMode; try { if (!string.IsNullOrEmpty(field.DefaultValue)) { if (field.FieldValueType == typeof(Boolean)) { bool isbool = false; fld.Value = (Boolean.TryParse(field.DefaultValue, out isbool)); fld.InputFieldLabel = string.Empty; } else { fld.Value = field.DefaultValue; } } } catch (Exception) { } canvas.Controls.Add(fld); if (field.Required) { InputFormRequiredFieldValidator required = new InputFormRequiredFieldValidator(); required.ID = "required_" + fld.ClientID; required.ControlToValidate = fld.ClientID; required.ValidationGroup = fld.ClientID; required.ErrorMessage = field.ValidationMessage; //required.EnableClientScript = true; required.BreakAfter = true; required.BreakBefore = false; required.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic; canvas.Controls.Add(required); } if (field.Type == SPFieldType.Number) { SPFieldNumber Number = (SPFieldNumber)field; if (Number.MinimumValue != Double.MinValue && Number.MaximumValue != Double.MaxValue) { InputFormRangeValidator range = new InputFormRangeValidator(); range.ID = "range_" + fld.ClientID; range.ControlToValidate = fld.ClientID; range.ValidationGroup = fld.ClientID; range.ErrorMessage = field.ValidationMessage; //range.EnableClientScript = true; range.BreakAfter = true; range.BreakBefore = false; range.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic; range.MaximumValue = Number.MaximumValue.ToString(); range.MinimumValue = Number.MinimumValue.ToString(); range.Type = System.Web.UI.WebControls.ValidationDataType.Double; canvas.Controls.Add(range); } } if (field.Type == SPFieldType.Currency) { SPFieldCurrency Currency = (SPFieldCurrency)field; if (Currency.MaximumValue != Double.MaxValue && Currency.MinimumValue != Double.MinValue) { InputFormRangeValidator range = new InputFormRangeValidator(); range.ID = "range_" + fld.ClientID; range.ControlToValidate = fld.ClientID; range.ValidationGroup = fld.ClientID; range.ErrorMessage = field.ValidationMessage; //range.EnableClientScript = true; range.BreakAfter = true; range.BreakBefore = false; range.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic; range.MaximumValue = Currency.MaximumValue.ToString(); range.MinimumValue = Currency.MinimumValue.ToString(); range.Type = System.Web.UI.WebControls.ValidationDataType.Currency; canvas.Controls.Add(range); } } if (!string.IsNullOrEmpty(field.ValidationFormula)) { InputFormRegularExpressionValidator regex = new InputFormRegularExpressionValidator(); regex.ControlToValidate = fld.ClientID; regex.ValidationGroup = fld.ClientID; regex.ErrorMessage = fld.ErrorMessage; regex.ErrorMessage = field.ValidationMessage; //regex.EnableClientScript = true; regex.BreakAfter = true; regex.BreakBefore = false; regex.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic; regex.ValidationExpression = field.ValidationFormula; canvas.Controls.Add(regex); } /* * if (field.Type == SPFieldType.MultiChoice) * { * InputFormCheckBoxListValidator checkboxes = new InputFormCheckBoxListValidator(); * //SPFieldMultiChoice choice = (SPFieldMultiChoice)field; * checkboxes.ControlToValidate = fld.ClientID; * checkboxes.ValidationGroup = fld.ClientID; * checkboxes.ErrorMessage = fld.ErrorMessage; * checkboxes.EnableClientScript = true; * //checkboxes.BreakAfter = true; * checkboxes.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic; * canvas.Controls.Add(checkboxes); * * } */ } catch (Exception ex) { ex.Message.ToString(); } } } } }); }
private static string getFormat(SPField oField, XmlDocument oDoc, SPWeb oWeb) { string format = ""; switch (oField.Type) { case SPFieldType.DateTime: try { if (oDoc.FirstChild.Attributes["Format"].Value == "DateOnly") { format = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern; } else { format = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.FullDateTimePattern; } } catch { } break; case SPFieldType.Number: if (oDoc.FirstChild.Attributes["Percentage"] != null && oDoc.FirstChild.Attributes["Percentage"].Value.ToLower() == "true") { format = "0\\%;0\\%;0\\%"; } else { int decCount = 0; string decimals = ""; try { decCount = int.Parse(oDoc.FirstChild.Attributes["Decimals"].Value); } catch { } for (int i = 0; i < decCount; i++) { decimals += "0"; } if (decCount > 0) { decimals = "." + decimals; } format = ",0" + decimals; break; } break; case SPFieldType.Currency: SPFieldCurrency c = (SPFieldCurrency)oField; System.Globalization.NumberFormatInfo nInfo = System.Globalization.CultureInfo.GetCultureInfo(c.CurrencyLocaleId).NumberFormat; if ((0).ToString("c0", nInfo)[0] == '0') { format = ",0.00 " + nInfo.CurrencySymbol; } else { format = nInfo.CurrencySymbol + ",0.00"; } break; case SPFieldType.Calculated: switch (oDoc.FirstChild.Attributes["ResultType"].Value) { case "Currency": format = oWeb.Locale.NumberFormat.CurrencySymbol + ",0.00"; break; case "Number": if (oDoc.FirstChild.Attributes["Percentage"] != null && oDoc.FirstChild.Attributes["Percentage"].Value.ToLower() == "true") { format = "0\\%;-##%"; } else { int decCount = 0; string decimals = ""; try { decCount = int.Parse(oDoc.FirstChild.Attributes["Decimals"].Value); } catch { } for (int i = 0; i < decCount; i++) { decimals += "0"; } if (decCount > 0) { decimals = "." + decimals; } format = ",0" + decimals; } break; } ; break; } ; return(format); }
protected override void outputXml() { tb.AddTimer(); XmlDocument doc = new XmlDocument(); doc.LoadXml(Properties.Resources.txtGanttLayout.Replace("#gridid#", base.gridname)); XmlNode ndHeader = doc.FirstChild.SelectSingleNode("//Header"); XmlNode ndCols = doc.FirstChild.SelectSingleNode("//LeftCols"); //XmlNode ndLeftCols = doc.FirstChild.SelectSingleNode("//LeftCols"); if (showCheckboxes) { doc.FirstChild.SelectSingleNode("//Panel").Attributes["Visible"].Value = "1"; } ArrayList arrFields = new ArrayList(); string sTitleField = "Title"; foreach (string field in aViewFields) { try { SPField oField = getRealField(list.Fields.GetFieldByInternalName(field)); if (oField.InternalName == "Title") { sTitleField = field; } arrFields.Add(oField.InternalName); XmlNode ndNew = doc.CreateNode(XmlNodeType.Element, "C", doc.NamespaceURI); XmlAttribute attr = doc.CreateAttribute("Name"); attr.Value = oField.InternalName; if (attr.Value == "State") { attr.Value = "FState"; } ndNew.Attributes.Append(attr); attr = doc.CreateAttribute("CaseSensitive"); attr.Value = "0"; ndNew.Attributes.Append(attr); XmlDocument oDoc = new XmlDocument(); oDoc.LoadXml(oField.SchemaXml); string sFormat = getFormat(oField, oDoc, SPContext.Current.Web); string sType = "Html"; string sTitle = oField.Title; string sTitleAlign = "Left"; if (sFormat != "") { attr = doc.CreateAttribute("Format"); attr.Value = sFormat; ndNew.Attributes.Append(attr); if (oField.Type == SPFieldType.Currency) { SPFieldCurrency c = (SPFieldCurrency)oField; System.Globalization.NumberFormatInfo nInfo = System.Globalization.CultureInfo.GetCultureInfo(c.CurrencyLocaleId).NumberFormat; if (sFormat.Contains(nInfo.CurrencySymbol)) { attr = doc.CreateAttribute("EditFormat"); attr.Value = sFormat.Replace(nInfo.CurrencySymbol, string.Empty); ndNew.Attributes.Append(attr); } } else { attr = doc.CreateAttribute("EditFormat"); attr.Value = sFormat; ndNew.Attributes.Append(attr); } } if (oField.InternalName == "Edit") { attr = doc.CreateAttribute("Width"); attr.Value = "50"; ndNew.Attributes.Append(attr); } else if (oField.InternalName == "Title") { attr = doc.CreateAttribute("MinWidth"); attr.Value = "300"; ndNew.Attributes.Append(attr); attr = doc.CreateAttribute("Button"); attr.Value = "Html"; ndNew.Attributes.Append(attr); attr = doc.CreateAttribute("RelWidth"); attr.Value = "1"; ndNew.Attributes.Append(attr); } else if (oField.InternalName == "WorkspaceUrl") { attr = doc.CreateAttribute("Width"); attr.Value = "60"; ndNew.Attributes.Append(attr); attr = doc.CreateAttribute("Align"); attr.Value = "Center"; sTitleAlign = "Center"; ndNew.Attributes.Append(attr); attr = doc.CreateAttribute("WorkspaceUrl"); attr.Value = "h"; ndHeader.Attributes.Append(attr); sTitle = ""; } else { string sWidth = "150"; switch (oField.Type) { case SPFieldType.Text: sWidth = "150"; break; case SPFieldType.Number: attr = doc.CreateAttribute("Align"); attr.Value = "Right"; sTitleAlign = "Right"; ndNew.Attributes.Append(attr); sType = "Float"; break; case SPFieldType.Currency: attr = doc.CreateAttribute("Align"); attr.Value = "Right"; sTitleAlign = "Right"; ndNew.Attributes.Append(attr); sType = "Float"; break; case SPFieldType.DateTime: attr = doc.CreateAttribute("Align"); attr.Value = "Left"; ndNew.Attributes.Append(attr); sType = "Date"; break; case SPFieldType.Boolean: sType = "Bool"; break; case SPFieldType.Calculated: SPFieldCalculated oFC = (SPFieldCalculated)oField; if (oFC.OutputType == SPFieldType.Number || oFC.OutputType == SPFieldType.Currency || oFC.OutputType == SPFieldType.DateTime) { attr = doc.CreateAttribute("Align"); attr.Value = "Right"; sTitleAlign = "Right"; ndNew.Attributes.Append(attr); if (oFC.OutputType == SPFieldType.DateTime) { sType = "Date"; } else { sType = "Float"; } } else if (oFC.Description == "Indicator") { attr = doc.CreateAttribute("Align"); attr.Value = "Center"; sTitleAlign = "Center"; ndNew.Attributes.Append(attr); sWidth = "80"; } break; case SPFieldType.Choice: sType = "Enum"; { //Reference: http://longboo.com/demo/ejs-treegrid/Doc/TypeEnum.htm string senum = ""; string senumrange = ""; SPFieldChoice oCField = (SPFieldChoice)oField; //Used to prepare dropdown with field choice options foreach (string sChoice in oCField.Choices) { senum += ";" + sChoice.Replace(";", ""); } //Used to prepare count for an item //for (int i = 0; i < oCField.Choices.Count; i++) // senumrange += ";" + i.ToString(); senumrange = senum; attr = doc.CreateAttribute("Enum"); attr.Value = senum; ndNew.Attributes.Append(attr); attr = doc.CreateAttribute("EnumKeys"); attr.Value = senumrange; ndNew.Attributes.Append(attr); } sWidth = "150"; break; case SPFieldType.Lookup: sWidth = "150"; sType = "Enum"; attr = doc.CreateAttribute("Enum"); attr.Value = ""; ndNew.Attributes.Append(attr); attr = doc.CreateAttribute("EnumKeys"); attr.Value = ""; ndNew.Attributes.Append(attr); if (oField.TypeAsString.Equals("LookupMulti", StringComparison.InvariantCultureIgnoreCase)) { attr = doc.CreateAttribute("Range"); attr.Value = "1"; ndNew.Attributes.Append(attr); } hshLookupEnums.Add(oField.InternalName, new ArrayList()); hshLookupEnumKeys.Add(oField.InternalName, new ArrayList()); break; case SPFieldType.MultiChoice: { string senum = ""; SPFieldMultiChoice oCField = (SPFieldMultiChoice)oField; foreach (string sChoice in oCField.Choices) { senum += ";" + sChoice.Replace(";", ""); } attr = doc.CreateAttribute("Enum"); attr.Value = senum; ndNew.Attributes.Append(attr); attr = doc.CreateAttribute("Range"); attr.Value = "1"; ndNew.Attributes.Append(attr); } sType = "Enum"; sWidth = "150"; break; case SPFieldType.Note: sWidth = "200"; break; case SPFieldType.URL: sWidth = "150"; break; case SPFieldType.User: sWidth = "150"; attr = doc.CreateAttribute("CaseSensitive"); attr.Value = "0"; ndNew.Attributes.Append(attr); break; default: switch (oField.TypeAsString) { case "TotalRollup": attr = doc.CreateAttribute("Align"); attr.Value = "Right"; sTitleAlign = "Right"; ndNew.Attributes.Append(attr); break; } break; } attr = doc.CreateAttribute("MinWidth"); attr.Value = sWidth; ndNew.Attributes.Append(attr); } attr = doc.CreateAttribute("Wrap"); attr.Value = "0"; ndNew.Attributes.Append(attr); attr = doc.CreateAttribute("Type"); attr.Value = sType; ndNew.Attributes.Append(attr); ndCols.AppendChild(ndNew); if (oField.InternalName == "Title") { ndCols = doc.FirstChild.SelectSingleNode("//Cols"); } string iFieldName = oField.InternalName; if (iFieldName == "State") { iFieldName = "FState"; } attr = doc.CreateAttribute(iFieldName); attr.Value = sTitle; ndHeader.Attributes.Append(attr); attr = doc.CreateAttribute(oField.InternalName + "Align"); attr.Value = sTitleAlign; ndHeader.Attributes.Append(attr); if (arrHidden.Contains(oField.InternalName)) { attr = doc.CreateAttribute("Visible"); attr.Value = "0"; ndNew.Attributes.Append(attr); } } catch { } } XmlNode ndGantt = doc.FirstChild.SelectSingleNode("//RightCols/C[@Name='G']"); ndGantt.Attributes["GanttStart"].Value = StartDateField; ndGantt.Attributes["GanttEnd"].Value = DueDateField; ndGantt.Attributes["GanttComplete"].Value = ProgressField; ndGantt.Attributes["GanttText"].Value = InfoField; if (bShowGantt) { ndGantt.Attributes["Visible"].Value = "1"; } XmlNodeList ndRows = docXml.FirstChild.SelectNodes("row"); XmlNode ndParent = doc.FirstChild.SelectSingleNode("//B"); XmlNodeList ndOldCols = docXml.FirstChild.SelectNodes("//head/column"); XmlNode ndSummary = doc.FirstChild.SelectSingleNode("//Def/D[@Name='Summary']"); if (StartDateField != "") { XmlAttribute attr = doc.CreateAttribute(StartDateField + "Formula"); attr.Value = "ganttstart()"; ndSummary.Attributes.Append(attr); } if (DueDateField != "") { XmlAttribute attr = doc.CreateAttribute(DueDateField + "Formula"); attr.Value = "ganttend()"; ndSummary.Attributes.Append(attr); } if (ProgressField != "") { XmlAttribute attr = doc.CreateAttribute(ProgressField + "Formula"); attr.Value = "ganttpercent()"; ndSummary.Attributes.Append(attr); } //PercentCompleteFormula="ganttpercent('StartDate','DueDate','d')" foreach (XmlNode ndRow in ndRows) { ProcessItems(ndParent, ndRow, ndOldCols, doc); } foreach (XmlNode ndRow in doc.FirstChild.SelectNodes("//I[@Predecessors!='']")) { processPredecessors(ndRow, doc); } foreach (DictionaryEntry de in hshLookupEnums) { XmlNode nd = doc.FirstChild.SelectSingleNode("//C[@Name='" + de.Key.ToString() + "']"); if (nd != null) { nd.Attributes["EnumKeys"].Value = ";" + string.Join(";", (int[])((ArrayList)de.Value).ToArray(Type.GetType("System.Int32"))); } } foreach (DictionaryEntry de in hshLookupEnumKeys) { XmlNode nd = doc.FirstChild.SelectSingleNode("//C[@Name='" + de.Key.ToString() + "']"); if (nd != null) { nd.Attributes["Enum"].Value = ";" + string.Join(";", (string[])((ArrayList)de.Value).ToArray(Type.GetType("System.String"))); } } XmlNode ndPag = docXml.SelectSingleNode("//call[@command='setuppaging']"); XmlNode ndCfg = doc.SelectSingleNode("//Cfg"); if (ndPag != null) { XmlAttribute attr = doc.CreateAttribute("PagInfo"); attr.Value = ndPag.InnerText; ndSummary.Attributes.Append(attr); ndCfg.Attributes.Append(attr); attr = doc.CreateAttribute("PagSize"); attr.Value = view.RowLimit.ToString(); ndSummary.Attributes.Append(attr); ndCfg.Attributes.Append(attr); } XmlAttribute attrT = doc.CreateAttribute("LinkTitleField"); attrT.Value = sTitleField; ndCfg.Attributes.Append(attrT); tb.StopTimers(); if (epmdebug != null && epmdebug == "true") { XmlNode ndNew = doc.CreateNode(XmlNodeType.Element, "I", doc.NamespaceURI); XmlAttribute attr = doc.CreateAttribute("Title"); attr.Value = tb.GetHtml(); ndNew.Attributes.Append(attr); doc.FirstChild.SelectSingleNode("//B").AppendChild(ndNew); } if (list.BaseType == SPBaseType.DocumentLibrary) { XmlAttribute attr = doc.CreateAttribute("NameCol"); attr.Value = "FileLeafRef"; ndCfg.Attributes.Append(attr); attr = doc.CreateAttribute("MainCol"); attr.Value = "FileLeafRef"; ndCfg.Attributes.Append(attr); } else { XmlAttribute attr = doc.CreateAttribute("NameCol"); attr.Value = "Title"; ndCfg.Attributes.Append(attr); attr = doc.CreateAttribute("MainCol"); attr.Value = "Title"; ndCfg.Attributes.Append(attr); } data = doc.OuterXml; }