/// <summary>
        /// Service callable code to delete GridSettings by UserName GridName
        /// </summary>
        public static bool ReplaceGridSettings(DataSet ds)
        {
            if (ds == null || ds.Tables["GridSettings"] == null)
            {
                throw new Exception("The DataSet and/or DataTable is null.");
            }

            var clientDataSet = new GridSettingsCD();

            clientDataSet.Merge(ds, false, MissingSchemaAction.Ignore);

            if (clientDataSet.GridSettings.Rows.Count > 0)
            {
                var userName = clientDataSet.GridSettings[0]["UserName"] as string;
                var gridName = clientDataSet.GridSettings[0]["GridName"] as string;

                var gridSettingsTD = new GridSettingsTD();
                gridSettingsTD.GridSettings.BeginLoadData();
                gridSettingsTD.GridSettings.Merge(clientDataSet.GridSettings, false, MissingSchemaAction.Ignore);

                using (var ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    GridSettingsTD.DeleteGridSettingsByUserNameGridName(userName, gridName);
                    GridSettingsTD.UpdateGridSettings(gridSettingsTD);
                    ts.Complete();
                    return(true);
                }
            }

            return(false);
        }
        /// <summary>
        /// Service callable code to Delete/Insert/Update Grid Settings
        /// </summary>
        /// <param name="ds">A DataSet of type GridSettingsCD</param>
        /// <returns>A GridSettingsCD. If ALL updated OK contains updated data, if not contains the RowErrors</returns>
        public static GridSettingsCD UpdateGridSettings(DataSet ds)
        {
            if (ds == null || ds.Tables["GridSettings"] == null)
            {
                throw new Exception("The DataSet and/or DataTable is null.");
            }

            var clientDataSet = new GridSettingsCD();

            clientDataSet.Merge(ds, false, MissingSchemaAction.Ignore);

            #region Update GridSettings
            var tblDataSet = new GridSettingsTD.GridSettingsDataTable();

            if (clientDataSet.GridSettings.Select("", "", DataViewRowState.Deleted).Length > 0 ||
                clientDataSet.GridSettings.Select("", "", DataViewRowState.Added).Length > 0 ||
                clientDataSet.GridSettings.Select("", "", DataViewRowState.ModifiedCurrent).Length > 0)
            {
                if (clientDataSet.GridSettings.Select("", "", DataViewRowState.ModifiedCurrent).Length > 0)
                {
                    var modifiedGridSetting = new GridSettingsDataTable();

                    foreach (GridSettingsRow modifiedRow in clientDataSet.GridSettings.Select("", "", DataViewRowState.ModifiedCurrent))
                    {
                        modifiedGridSetting.Clear();
                        modifiedGridSetting.ImportRow(modifiedRow);

                        tblDataSet.Merge(GridSettingsTD.GetGridSetting(modifiedRow.GridName, modifiedRow.GridName, modifiedRow.ColumnName));
                        tblDataSet.Merge(modifiedGridSetting, false, MissingSchemaAction.Ignore);
                    }
                }

                var gridSettingsTD = new GridSettingsTD();
                gridSettingsTD.GridSettings.BeginLoadData();
                gridSettingsTD.GridSettings.Merge(clientDataSet.GridSettings, false, MissingSchemaAction.Ignore);
                gridSettingsTD.GridSettings.Merge(tblDataSet, false, MissingSchemaAction.Ignore);


                using (var ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    GridSettingsTD.UpdateGridSettings(gridSettingsTD);
                    ts.Complete();
                }
            }
            #endregion

            return(clientDataSet);
        }