public static EnumDataDefine Create(Type type, EnumFieldType fieldType, string fieldName) { EnumDataDefine mapping = CreateType(type, fieldType); mapping.FieldName = fieldName; return(mapping); }
private static EnumDataDefine CreateType(Type type, EnumFieldType fieldType) { Type rawType = null; bool isNullable = false; if (type.IsGenericType) { Type frameType = type.GetGenericTypeDefinition(); if (frameType.FullName == "System.Nullable`1") { Type[] arguments = type.GetGenericArguments(); rawType = arguments [0]; isNullable = true; } } if (rawType == null) { rawType = type; } if (!rawType.IsEnum) { throw new LightDataException(RE.SingleFieldSelectTypeError); } EnumDataDefine mapping = null; mapping = new EnumDataDefine(type, rawType, fieldType); mapping.IsNullable = isNullable; return(mapping); }
public static EnumDataDefine Create(Type type, EnumFieldType fieldType, int fieldOrder) { EnumDataDefine mapping = CreateType(type, fieldType); mapping.FieldOrder = fieldOrder; return(mapping); }
public EnumFieldMapping(Type type, string fieldName, string indexName, DataMapping mapping, bool isNullable, string dbType) : base(type, fieldName, indexName, mapping, isNullable, dbType) { // ObjectType = type; // Name = fieldName; // IndexName = indexName; // TypeMapping = mapping; if (string.IsNullOrEmpty(dbType) || dbType.IndexOf("char", 0, StringComparison.OrdinalIgnoreCase) == -1) { EnumType = EnumFieldType.EnumToInt; } else { EnumType = EnumFieldType.EnumToString; } // DBType = dbType; Array values = Enum.GetValues(ObjectType); _defaultValue = values.GetValue(0); for (int i = 0; i < values.Length; i++) { object obj = values.GetValue(i); _dict.Add(Convert.ToInt32(obj), obj); } }
private EnumDataDefine(Type type, Type rawType, EnumFieldType enumType) : base(type) { _rawType = rawType; _enumType = enumType; Array values = Enum.GetValues(_rawType); _defaultValue = values.GetValue(0); for (int i = 0; i < values.Length; i++) { object obj = values.GetValue(i); _dict.Add(obj.GetHashCode(), obj); } }
private FieldDefinition CreateEnumFieldDefinition() { FieldDefinition fieldDefinition = new FieldDefinition(); fieldDefinition.Name = "enum-field"; fieldDefinition.Required = true; fieldDefinition.Label = new LocalizedString(); fieldDefinition.Label.Add("en", "enum description"); EnumFieldType enumType = new EnumFieldType(); enumType.Values = new List <EnumValue>(); enumType.Values.Add(new EnumValue() { Key = "enum-key-1", Label = "enum-label-1" }); enumType.Values.Add(new EnumValue() { Key = "enum-key-2", Label = "enum-label-2" }); fieldDefinition.Type = enumType; return(fieldDefinition); }
private void buttonOK_Click(object sender, EventArgs e) { string fieldName = textBoxFieldName.Text.Trim(); if (fieldName.Equals(string.Empty)) { MessageBox.Show("字段名不能为空!", "提示"); return; } int firstChar = 0; if (int.TryParse(fieldName.Substring(0, 1), out firstChar)) { MessageBox.Show("字段名不能以数字开头!", "提示"); return; } if (fieldName.Length > 10) { MessageBox.Show("字段名长度不能大于10!", "提示"); return; } EnumFieldType fieldType = EnumFieldType.None; int fieldWidth = 0; string type = comboBoxFieldType.Text.Trim(); if (string.IsNullOrEmpty(type)) { MessageBox.Show("字段类型不能为空!", "提示"); return; } else { switch (type) { case "Date": fieldType = EnumFieldType.Date; fieldWidth = 10; break; case "Double": fieldType = EnumFieldType.Double; fieldWidth = 8; break; case "INT32": fieldType = EnumFieldType.INT32; fieldWidth = 4; break; case "Text": fieldType = EnumFieldType.Text; fieldWidth = 8000; break; default: MessageBox.Show("字段类型不匹配!", "提示"); return; } } if (layer != null) { GSOFieldDefn fieldDef = new GSOFieldDefn() { //设置字段名称 Name = fieldName, //设置字段类型 Type = fieldType, //设置字段长度 Width = fieldWidth }; var features = layer.GetAllFeatures(); //遍历图层将字段信息添加到每个feature中 for (int i = 0; i < features.Length; i++) { var feature = features[i]; feature.AddField(fieldDef); } //保存图层 layer.Save(); //将新建列添加到数据表中 dataGridView1.Columns.Add(fieldName, fieldName); } this.Close(); }
/// <summary> /// 获取表中的字段信息(没有做版本判断) /// </summary> /// <param name="pFieldAtrrCollection"></param> /// <returns></returns> private MetaDataField GetMetaTableFieldByXMLAtr(XmlAttributeCollection pFieldAtrrCollection) { if (pFieldAtrrCollection == null || pFieldAtrrCollection.Count <= 0) { return(null); } MetaDataField pMetaDataField = new MetaDataField(); ///获取表名称 XmlAttribute pAttribute = pFieldAtrrCollection["Name"]; if (pAttribute != null) { pMetaDataField.Name = pAttribute.Value; } ///获取要素代码 pAttribute = pFieldAtrrCollection["Code"]; if (pAttribute != null) { pMetaDataField.Code = pAttribute.Value; } ///获取字段类型 pAttribute = pFieldAtrrCollection["Type"]; if (pAttribute != null) { pMetaDataField.Type = pAttribute.Value; } ///获取字段长度 pAttribute = pFieldAtrrCollection["Length"]; if (pAttribute != null) { if (pAttribute.Value != "" && pAttribute.Value != null) { int nLength = -1; if (VCTFile.ConvertToInt32(pAttribute.Value, out nLength)) { pMetaDataField.Length = nLength; } } } ///获取字段精度 pAttribute = pFieldAtrrCollection["Precision"]; if (pAttribute != null) { int nPresion = -1; if (pAttribute.Value != "" && pAttribute.Value != null) { if (VCTFile.ConvertToInt32(pAttribute.Value, out nPresion)) { pMetaDataField.Presion = nPresion; } } } ///获取要素代码字段 pAttribute = pFieldAtrrCollection["FieldType"]; if (pAttribute != null) { EnumFieldType pEnumType = EnumFieldType.Other; switch (pAttribute.Value) { case "bsm": pEnumType = EnumFieldType.EntityID; break; case "ysdm": pEnumType = EnumFieldType.YSDM; break; case "other": pEnumType = EnumFieldType.Other; break; default: break; } pMetaDataField.FiledType = pEnumType; } ///获取约束条件 与值域 对照表 暂时不需要 return(pMetaDataField); }
private void btnCreateModel_Click(object sender, EventArgs e) { if (comboBoxDataSourceList.SelectedItem == null) { MessageBox.Show("请选择一个数据源!", "提示"); return; } GSODataSource ds = Utility.getDataSourceByFullName(globeControl1, comboBoxDataSourceList.SelectedItem.ToString().Trim()); if (ds == null) { MessageBox.Show("数据源不能为空!", "提示"); return; } string newLayerName = textboxNewLayerName.Text.Trim(); if (newLayerName == "") { MessageBox.Show("新建图层的名称不能为空!", "提示"); return; } GSOFeatureDataset newFeatureDataset = ds.CreateFeatureDataset(newLayerName); if (newFeatureDataset == null) { MessageBox.Show("新建图层的名称不符合要求!", "提示"); return; } if (radioButtonUseTemplate.Checked == true) { string shpLayerName = comboBoxShpLayerList.Text; GSOLayer shpLayer = globeControl1.Globe.Layers.GetLayerByCaption(shpLayerName); if (shpLayer == null) { MessageBox.Show("您选择的图层模板不存在!", "提示"); return; } if (shpLayer.Dataset != null && shpLayer.Dataset is GSOFeatureDataset) { GSOFeatureDataset shpFeatureDataset = shpLayer.Dataset as GSOFeatureDataset; for (int i = 0; i < shpFeatureDataset.FieldCount; i++) { GSOFieldAttr fielddef = shpFeatureDataset.GetField(i); GSOFieldAttr field = new GSOFieldAttr(); field.Name = fielddef.Name; field.Type = fielddef.Type; field.Width = fielddef.Width; field.Precision = fielddef.Precision; bool res = newFeatureDataset.AddField(field); } newFeatureDataset.Save(); MessageBox.Show("图层创建成功!", "提示"); } else { MessageBox.Show("您选择的图层模板不是矢量图层!", "提示"); return; } } else if (radioButtonUseCustom.Checked == true) { int rowCount = dataGridView1.Rows.Count; for (int i = 0; i < rowCount; i++) { string fieldName = dataGridView1.Rows[i].Cells[0].Value.ToString(); string fieldType = dataGridView1.Rows[i].Cells[1].Value.ToString(); string fieldWidth = dataGridView1.Rows[i].Cells[2].Value.ToString(); string fieldPrecision = dataGridView1.Rows[i].Cells[3].Value.ToString(); EnumFieldType enumFieldType = EnumFieldType.Text; int intFieldWidth = 2000; int intFieldPrecision = 0; if (fieldType == "Double") { enumFieldType = EnumFieldType.Double; intFieldWidth = 8; if (int.TryParse(fieldPrecision, out intFieldPrecision) == false) { intFieldPrecision = 2; } } else if (fieldType == "Int32") { enumFieldType = EnumFieldType.INT32; intFieldWidth = 4; } else if (fieldType == "Date") { enumFieldType = EnumFieldType.Date; intFieldWidth = 7; } else { int.TryParse(fieldWidth, out intFieldWidth); } GSOFieldAttr field = new GSOFieldAttr(); field.Name = fieldName; field.Type = enumFieldType; field.Width = intFieldWidth; if (field.Type == EnumFieldType.Double) { field.Precision = intFieldPrecision; } bool res = newFeatureDataset.AddField(field); } newFeatureDataset.Save(); MessageBox.Show("图层创建成功!", "提示"); } }
//查询 private void buttonConditionSelect_Click(object sender, EventArgs e) { if (layer == null) { MessageBox.Show("请选择一个图层!"); return; } if (comboBoxConditionFieldName.Text == "" || comboBoxConditionFieldValue.Text == "" || comboBoxCondition.Text == "") { MessageBox.Show("请输入完整的查询条件!", "提示"); return; } GSOFeatureDataset featureDataset = layer.Dataset as GSOFeatureDataset; EnumFieldType currentFieldType = EnumFieldType.Text; if (featureDataset != null) { GSOFieldAttr field = featureDataset.GetField(comboBoxConditionFieldName.Text); if (field != null) { switch (field.Type) { case EnumFieldType.Double: case EnumFieldType.INT32: currentFieldType = EnumFieldType.Double; break; case EnumFieldType.Date: currentFieldType = EnumFieldType.Date; break; } } } try { switch (comboBoxCondition.Text) { case "=": for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature feature = layer.GetAt(i); if (feature != null && feature.GetValue(comboBoxConditionFieldName.Text).ToString() == comboBoxConditionFieldValue.Text) { features.Add(feature); } } break; case ">=": for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature feature = layer.GetAt(i); if (currentFieldType == EnumFieldType.Double) { if (feature != null && Double.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) >= Double.Parse(comboBoxConditionFieldValue.Text)) { features.Add(feature); } } else if (currentFieldType == EnumFieldType.Date) { if (feature != null && DateTime.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) >= DateTime.Parse(comboBoxConditionFieldValue.Text)) { features.Add(feature); } } } break; case "<=": for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature feature = layer.GetAt(i); if (currentFieldType == EnumFieldType.Double) { if (feature != null && Double.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) <= Double.Parse(comboBoxConditionFieldValue.Text)) { features.Add(feature); } } else if (currentFieldType == EnumFieldType.Date) { if (feature != null && DateTime.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) <= DateTime.Parse(comboBoxConditionFieldValue.Text)) { features.Add(feature); } } } break; case ">": for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature feature = layer.GetAt(i); if (currentFieldType == EnumFieldType.Double) { if (feature != null && Double.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) > Double.Parse(comboBoxConditionFieldValue.Text)) { features.Add(feature); } } else if (currentFieldType == EnumFieldType.Date) { if (feature != null && DateTime.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) > DateTime.Parse(comboBoxConditionFieldValue.Text)) { features.Add(feature); } } } break; case "<": for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature feature = layer.GetAt(i); if (currentFieldType == EnumFieldType.Double) { if (feature != null && Double.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) < Double.Parse(comboBoxConditionFieldValue.Text)) { features.Add(feature); } } else if (currentFieldType == EnumFieldType.Date) { if (feature != null && DateTime.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) < DateTime.Parse(comboBoxConditionFieldValue.Text)) { features.Add(feature); } } } break; } if (features == null) { MessageBox.Show("请重新输入查询条件!", "提示"); return; } if (features.Length == 0) { MessageBox.Show("没有找到符合查询条件的对象!", "提示"); return; } SetDataTable(features); } catch (Exception ex) { Log.PublishTxt(ex); MessageBox.Show(ex.Message, "提示"); return; } }
private void buttonOK_Click(object sender, EventArgs e) { string fieldName = textBoxFieldName.Text.Trim(); if (fieldName == "") { MessageBox.Show("字段名不能为空!", "提示"); return; } int firstChar = 0; if (int.TryParse(fieldName.Substring(0, 1), out firstChar)) { MessageBox.Show("字段名不能以数字开头!", "提示"); return; } //if (isContainChinese(fieldName)) //{ // MessageBox.Show("字段名不能包含中文!", "提示"); // return; //} if (fieldName.Length > 10) { MessageBox.Show("字段名长度不能大于10!", "提示"); return; } EnumFieldType fieldType = EnumFieldType.None; int fieldWidth = 0; string type = comboBoxFieldType.Text.Trim(); if (type == "") { MessageBox.Show("字段类型不能为空!", "提示"); return; } else { switch (type) { case "Date": fieldType = EnumFieldType.Date; fieldWidth = 10; break; case "Double": fieldType = EnumFieldType.Double; fieldWidth = 8; break; case "INT32": fieldType = EnumFieldType.INT32; fieldWidth = 4; break; case "Text": fieldType = EnumFieldType.Text; fieldWidth = 8000; break; } } if (layer != null && layer.GetAllFeatures().Length > 0) { //GSOFieldDefn field = new GSOFieldDefn(); //field.Name = fieldName; //field.Type = fieldType; //field.Width = fieldWidth; //for (int i = 0; i < layer.GetAllFeatures().Length; i++) //{ // GSOFeature feature = layer.GetAt(i); // feature.AddField(field); //} //dataGridView1.Columns.Add(fieldName, fieldName); GSOFieldAttr field = new GSOFieldAttr(); field.Name = fieldName; field.Type = fieldType; field.Width = fieldWidth; GSOFeatureDataset dataset = layer.Dataset as GSOFeatureDataset; if (dataset != null) { dataset.AddField(field); dataGridView1.Columns.Add(fieldName, fieldName); } } this.Close(); }