protected void dgEtFields_ItemCommand(Object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { bool isVirtual; bool fieldSuppress; int fieldOrder; int fieldId; try { fieldId = int.Parse(e.Item.Cells[1].Text); } catch { fieldId = -1; } int tableId = int.Parse(ddlTableDefs.SelectedValue); string tableName = lblEtTableName.Text; MetadataNewDa MNDa = new MetadataNewDa(); switch (e.CommandName) { case "Expand": viewMode = "editTable"; setViewMode(); PlaceHolder exp; exp = e.Item.Cells[2].FindControl("Expanded") as PlaceHolder; exp.Visible = !exp.Visible; break; case "Edit": string fieldName = ((TextBox)e.Item.Cells[2].Controls[1]).Text; string fieldDataType = ((DropDownList)e.Item.Cells[3].Controls[1]).SelectedValue; fieldSuppress = ((CheckBox)e.Item.Cells[5].Controls[1]).Checked; isVirtual = ((CheckBox)e.Item.Cells[4].Controls[1]).Checked; try { fieldOrder = int.Parse(((DropDownList)e.Item.Cells[6].Controls[1]).SelectedValue); } catch { fieldOrder = -1; } viewMode = "editTable"; setViewMode(); DataRow fieldDr = MNDa.GetMetadataField(fieldId); int previousFieldOrder = -1; if (fieldDr[BOL.MetadataField.FieldOrder] != null && PageUtil.IsInteger(fieldDr[BOL.MetadataField.FieldOrder].ToString())) { previousFieldOrder = (int)fieldDr[BOL.MetadataField.FieldOrder]; } // This call updates the field order correctly MNDa.UpdateMetaField(fieldId, fieldName, fieldDataType, fieldSuppress, fieldOrder); // Resequence fields this.UpdateFieldOrders(fieldOrder, previousFieldOrder, tableId, fieldId, fieldSuppress); if (isVirtual) { // refresh virtual field map //Caisis.BOL.BusinessObjectFactory.RebuildVirtualFieldMap(); Caisis.BOL.BusinessObject.RebuildVirtualFields(); } updateEditTableView(tableId, tableName); break; case "Delete": bool okToDelete = true; isVirtual = ((CheckBox)e.Item.Cells[4].Controls[1]).Checked; fieldId = int.Parse(e.Item.Cells[1].Text); if (isVirtual) { okToDelete = !MNDa.VirtualMetaFieldHasSavedData(fieldId); } if (okToDelete) { viewMode = "editTable"; setViewMode(); MNDa.DeleteMetaField(fieldId); if (isVirtual) { // refresh virtual field map //Caisis.BOL.BusinessObjectFactory.RebuildVirtualFieldMap(); Caisis.BOL.BusinessObject.RebuildVirtualFields(); } //MNDa.MetaFieldOrderRenumber(tableId); updateEditTableView(tableId, tableName); } else { viewMode = "errorMessage"; setViewMode(); lblErrorHeading.Text = "Could not delete virtual meta field"; lblErrorMessage.Text = "The selected virtual meta field has data saved in virtual table. The virtual meta field was not deleted."; } break; case "AddNewField": TextBox efTxtNewVirtualField; DropDownList efDdlNewVirtualFieldDataType; CheckBox efCbxNewFieldIsVirtual; CheckBox efCbxNewFieldSuppress; DropDownList efDdlNewFieldOrder; efTxtNewVirtualField = (TextBox)e.Item.FindControl("efTxtNewVirtualField"); efDdlNewVirtualFieldDataType = (DropDownList)e.Item.FindControl("efDdlNewVirtualFieldDataType"); efCbxNewFieldIsVirtual = (CheckBox)e.Item.FindControl("efCbxNewFieldIsVirtual"); efCbxNewFieldSuppress = (CheckBox)e.Item.FindControl("efCbxNewFieldSuppress"); efDdlNewFieldOrder = (DropDownList)e.Item.FindControl("efDdlNewFieldOrder"); string newFieldName = efTxtNewVirtualField.Text; string dataType = efDdlNewVirtualFieldDataType.SelectedValue; fieldSuppress = ((CheckBox)e.Item.Cells[5].Controls[1]).Checked; string strFieldOrder = ((DropDownList)e.Item.Cells[6].Controls[1]).SelectedValue; fieldOrder = -1; try { fieldOrder = int.Parse(((DropDownList)e.Item.Cells[6].Controls[1]).SelectedValue); } catch {}; if (fieldOrder > -1) { fieldId = MNDa.AddMetaField(tableId, newFieldName, dataType, -1, true, fieldSuppress, fieldOrder); MNDa.MetaFieldOrderRenumber(tableId); } else { fieldId = MNDa.AddMetaField(tableId, newFieldName, dataType, -1, true, fieldSuppress); } // refresh virtual field map //Caisis.BOL.BusinessObjectFactory.RebuildVirtualFieldMap(); Caisis.BOL.BusinessObject.RebuildVirtualFields(); viewMode = "editTable"; setViewMode(); updateEditTableView(tableId, tableName); break; case "AddNewFieldCancel": viewMode = "editTable"; setViewMode(); updateEditTableView(tableId, tableName); break; } }