public void PasteRowCommand() { try { ExecutableProgramColumnMetaDataList.Sort(delegate(ColumnMetaData c1, ColumnMetaData c2) { return(c1.Order.CompareTo(c2.Order)); }); char[] rowSplitter = { '\r', '\n' }; char[] columnSplitter = { '\t' }; //get the text from clipboard IDataObject dataInClipboard = Clipboard.GetDataObject(); string stringInClipboard = (string)dataInClipboard.GetData(DataFormats.Text); //split it into rows... string[] rowsInClipboard = stringInClipboard.Split(rowSplitter, StringSplitOptions.RemoveEmptyEntries); foreach (string row in rowsInClipboard) { NewExecutableProgramCommand(""); //this will generate a new item and set it as the selected item... //split row into cell values string[] valuesInRow = row.Split(columnSplitter); int i = 0; foreach (string columnValue in valuesInRow) { SelectedExecutableProgram.SetPropertyValue(ExecutableProgramColumnMetaDataList[i].Name, columnValue); i++; } } } catch (Exception ex) { NotifyMessage(ex.InnerException.ToString()); } }
private void SelectedExecutableProgram_PropertyChanged(object sender, PropertyChangedEventArgs e) {//these properties are not to be persisted we will igore them... if (e.PropertyName == "IsSelected" || e.PropertyName == "IsExpanded" || e.PropertyName == "IsValid" || e.PropertyName == "NotValidMessage" || e.PropertyName == "LastModifiedBy" || e.PropertyName == "LastModifiedByDate") { return; } //Key ID Logic... if (e.PropertyName == "ExecutableProgramID") {//make sure it is has changed... if (SelectedExecutableProgramMirror.ExecutableProgramID != SelectedExecutableProgram.ExecutableProgramID) { //if their are no records it is a key change if (ExecutableProgramList != null && ExecutableProgramList.Count == 0 && SelectedExecutableProgram != null && !string.IsNullOrEmpty(SelectedExecutableProgram.ExecutableProgramID)) { ChangeKeyLogic(); return; } EntityStates entityState = GetExecutableProgramState(SelectedExecutableProgram); if (entityState == EntityStates.Unchanged || entityState == EntityStates.Modified) { //once a key is added it can not be modified... if (Dirty && AllowCommit) //dirty record exists ask if save is required... { NotifySaveRequired("Do you want to save changes?", _saveRequiredResultActions.ChangeKeyLogic); } else { ChangeKeyLogic(); } return; } } }//end KeyID logic... object propertyChangedValue = SelectedExecutableProgram.GetPropertyValue(e.PropertyName); object prevPropertyValue = SelectedExecutableProgramMirror.GetPropertyValue(e.PropertyName); string propertyType = SelectedExecutableProgram.GetPropertyType(e.PropertyName); //in some instances the value is not really changing but yet it still is tripping property change.. //This will ensure that the field has physically been modified... //As well when we revert back it constitutes a property change but they will be = and it will bypass the logic... bool objectsAreEqual; if (propertyChangedValue == null) { if (prevPropertyValue == null)//both values are null { objectsAreEqual = true; } else//only one value is null { objectsAreEqual = false; } } else { if (prevPropertyValue == null)//only one value is null { objectsAreEqual = false; } else //both values are not null use .Equals... { objectsAreEqual = propertyChangedValue.Equals(prevPropertyValue); } } if (!objectsAreEqual) { //Here we do property change validation if false is returned we will reset the value //Back to its mirrored value and return out of the property change w/o updating the repository... if (ExecutableProgramPropertyChangeIsValid(e.PropertyName, propertyChangedValue, prevPropertyValue, propertyType)) { Update(SelectedExecutableProgram); //set the mirrored objects field... SelectedExecutableProgramMirror.SetPropertyValue(e.PropertyName, propertyChangedValue); SelectedExecutableProgramMirror.IsValid = SelectedExecutableProgram.IsValid; SelectedExecutableProgramMirror.IsExpanded = SelectedExecutableProgram.IsExpanded; SelectedExecutableProgramMirror.NotValidMessage = SelectedExecutableProgram.NotValidMessage; } else { SelectedExecutableProgram.SetPropertyValue(e.PropertyName, prevPropertyValue); SelectedExecutableProgram.IsValid = SelectedExecutableProgramMirror.IsValid; SelectedExecutableProgram.IsExpanded = SelectedExecutableProgramMirror.IsExpanded; SelectedExecutableProgram.NotValidMessage = SelectedExecutableProgramMirror.NotValidMessage; } } }