Способ удаления данных таблицы с помощью директивы ng-click и изменения флага IsDelete на true в базе данных при сохранении данных в базе данных - PullRequest
0 голосов
/ 03 февраля 2019

Если кто-нибудь может дать мне несколько советов о том, как заставить мою кнопку удалять запись с помощью директивы deleteRegister ng-click.

Моя идея состоит в том, чтобы удалить строку из таблицы в моем Register.cshtml, но присервер поменяет флаг isDelete на true, не удаляя запись базы данных, просто сохранит данные, но с флагом IsDelete как true.

Я оставлю фрагмент кода для лучшего понимания.

Любая помощь приветствуется!Мой взгляд html здесь:

<div class="row" style="">
        <table class="table table-striped">
        <thead>
            <tr>
                <th style="display:none">Id</th>
                <th>Nome</th>
                <th>Sobrenome</th>
                <th>Ativo</th>
                <th>Email</th>
                <th>Editar</th>
                <th>Remover</th>
            </tr>
        </thead>
            <tbody>
                <tr ng-repeat="register in registers">
                    <td style="display:none">{{register.UserId}}</td>
                    <td>{{register.Name}}</td>
                    <td>{{register.LastName}}</td>
                    <td><input type="checkbox" ng-model="register.IsActive" disabled /></td>
                    <td>{{register.Email}}</td>
                    <td>
                        <a ng-click="editRegister($event, register)" class="glyphicon glyphicon-edit"></a>
                    </td>
                    <td>
                        <a href="" ng-click="deleteRegister(register.UserId)" class="glyphicon glyphicon-trash"></a>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>

Вот мой controller.js

$scope.deleteRegister = function (userId) {
    var post = $http({
        method: "POST",
        url: "http://localhost:51734/api/UserAPI",
        data: userId
    });
    post.success(function (data, status) {
        $scope.registers = $scope.registers.filter(function (register) {
            return register.UserId !== userId;
        })
    })

И мой сервер, в бэкэнде:

[HttpPut]
    [Route("api/UserAPI/Delete")]
    public HttpResponseMessage Delete(int id)
    {
        try
        {
            var register = ctx.User.Find(id);
            if (register != null)
            {
                register.IsDelete = true;
                ctx.SaveChanges();
                return Request.CreateResponse(HttpStatusCode.OK);
            }
            else
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Usuário não encontrado");
            }
        }
        catch (Exception ex)
        {

            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
        }

    }

Спасибо!

1 Ответ

0 голосов
/ 05 февраля 2019

Хорошо, я уже могу удалить строку в моем view.cshtml, теперь я просто пытаюсь сохранить значение, которое уже существует в моей базе данных, изменяя только одно свойство этого объекта, которое имеет логическое значение isDelete, для true.

Итак, мой объект person имеет идентификатор, имя, фамилию, дату рождения и мою логическую переменную IsDelete, когда я нажимаю кнопку удаления, он сохраняет объект на сервере и изменяет свойство IsDelete на true.

Мой controller.js:

$scope.deleteRegister = function (register) {
    var index = -1;
    var listOfRegister = eval($scope.registers);
    for (var i = 0; i < listOfRegister.length; i++) {
        if (listOfRegister[i].register === register) {
            index = i;
            break;
        }
    }
    if (index === -1) {
        alert("Something gone wrong");
    }
    $scope.registers.splice(index, 1);
    $http({
        method: 'Delete',
        url: 'http://localhost:51734/api/UserAPI/',

    }).then(function (res) {
        alert('Success Del');
        $scope.GetAllRegisters();
    })
};

Мой index.cshtl:

<td>
 <a href="" ng-click="deleteRegister(register)" class="glyphicon glyphicon-trash"></a>
</td>

И мой контроллер API:

//DELETE: api/UserAPI/5
    [HttpPost]
    [Route("api/UserAPI")]
    public HttpResponseMessage Delete(UserViewModel uservm)
    {
        try
        {
            User usr = new Models.User();

            var register = ctx.User.Where(x => x.UserId == uservm.UserId).SingleOrDefault();
            uservm.IsDelete = true;
            if (register != null)
            {
                register.IsDelete = uservm.IsDelete;
                ctx.SaveChanges();
                return Request.CreateResponse(HttpStatusCode.OK);
            }
            else
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Record not found");
            }
        }
        catch (Exception ex)
        {

            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
        }

    }

IЯ полагаю, что это настолько ясно, насколько это возможно, исходя из следующей цели, которую я хочу достичь.Спасибо.

...