/// <summary> /// Metoda de instanta ce permite recuperarea unei liste de String (camp = valoare) cu toate campurile modificate din DataRow /// </summary> /// <param name="ActionToDoAfter">Precizam daca vrem sa reinitializam campurile modificate cu valorile initiale dupa ce am recuperat modificarile</param> /// <param name="listChampOut">Lista de campuri care nu ne intereseaza</param> /// <returns></returns> protected string GetMyDataRowChanges(EnumActionOnChanges ActionToDoAfter, List <string> listChampOut) { if (this.IsMyDataRowHasChanged()) { //on construit la chaine de modification System.Text.StringBuilder strSqlModification = new System.Text.StringBuilder(); System.Data.DataColumnCollection colonnes; //Recuperam coloanete prin clonarea tabelei obiectului. colonnes = this.lDataRowCorespunzator.Table.Clone().Columns; //Eliminam coloanele care nu ne intereseaza foreach (String champToRemove in listChampOut) { colonnes.Remove(lAliasTabela + champToRemove); } foreach (System.Data.DataColumn dtCol in colonnes) { if (string.Compare(this.lDataRowCorespunzator[dtCol.ColumnName, System.Data.DataRowVersion.Original].ToString(), this.lDataRowCorespunzator[dtCol.ColumnName].ToString(), false) != 0) { if (string.IsNullOrEmpty(lAliasTabela)) { strSqlModification.Append(dtCol.ColumnName); } else { strSqlModification.Append(dtCol.ColumnName.Substring(lAliasTabela.Length)); } strSqlModification.Append(" = "); string sTypeDate = dtCol.DataType.Name; if (sTypeDate == "Int32" || sTypeDate == "Int16") { if (this.lDataRowCorespunzator.IsNull(dtCol.ColumnName)) { strSqlModification.Append("NULL"); } else { strSqlModification.Append(this.lDataRowCorespunzator[dtCol.ColumnName].ToString()); } } else { if (sTypeDate == "Double" || sTypeDate == "Single") { strSqlModification.Append(Double.Parse(this.lDataRowCorespunzator[dtCol.ColumnName].ToString())); } else { if (sTypeDate == "Decimal") { strSqlModification.Append(Decimal.Parse(this.lDataRowCorespunzator[dtCol.ColumnName].ToString())); } else { if (sTypeDate == "String") { strSqlModification.Append(this.lDataRowCorespunzator[dtCol.ColumnName].ToString()); } else { if (sTypeDate == "DateTime") { if (this.lDataRowCorespunzator.IsNull(dtCol.ColumnName)) { strSqlModification.Append("NULL"); } else { strSqlModification.Append(DateTime.Parse(this.lDataRowCorespunzator[dtCol.ColumnName].ToString())); } } else { if (sTypeDate == "Boolean") { strSqlModification.Append(this.lDataRowCorespunzator[dtCol.ColumnName].ToString()); } else { strSqlModification.Append(this.lDataRowCorespunzator[dtCol.ColumnName].ToString()); } } } } } } strSqlModification.Append(", "); } } //stergem ultima virgula if (strSqlModification.Length > 2) { strSqlModification.Remove(strSqlModification.Length - 2, 2); } //daca asa este specificat in parametru, acceptam modificarile if (ActionToDoAfter == EnumActionOnChanges.ResumeChanges) { this.ResumeMyDataRowChanges(); } return(strSqlModification.ToString()); } else { return(""); } }
/// <summary> /// Metoda de instanta ce permite recuperarea unei liste de String (camp = valoare) cu toate campurile modificate din DataRow /// </summary> /// <param name="ActionToDoAfter">Precizam daca vrem sa reinitializam campurile modificate cu valorile initiale dupa ce am recuperat modificarile</param> /// <returns></returns> protected string GetMyDataRowChanges(EnumActionOnChanges ActionToDoAfter) { List <string> lstchampout = new List <string>(); return(this.GetMyDataRowChanges(ActionToDoAfter, lstchampout)); }