Как передать несколько значений флажка с помощью (атрибут data-value) - PullRequest
0 голосов
/ 07 ноября 2018

Здравствуйте, добрый день, коллеги-программисты,

Как передать множественное значение флажка с помощью атрибута data-value, чтобы при нажатии кнопки удаления можно было передать его через мой контроллер с помощью общедоступного ActionResult (элементы списка).

CSHTML:

 @foreach (var item in Model.ReportTrfPendingList)
                {
                <tr>
                    <td><input type="checkbox" data-value="@item.trfbch"/></td>
                    <td>@item.trfpon</td>
                    <td>@item.dptnam</td>
                    <td>@item.trfbch</td>
                    <td><button type="button" class="btn btn-primary deleteBtn" data-value="@item.trfbch">Delete</button></td>

                    <td>@CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(Convert.ToInt32(@item.trfsdt.Value.ToString().Substring(2, 2)))&nbsp; @item.trfsdt.Value.ToString().Substring(4, 2)&nbsp;&#44; @DateTime.Now.Year.ToString().Substring(0, 2)@item.trfsdt.Value.ToString().Substring(0, 2)</td>



                </tr>

                }
            </tbody>

SCRIPT:

   $("#SelectDeleteBtn").click(function () {

    ---< Processing events here > ---

});

CONTROLLER:

     [HttpPost]
    public ActionResult SelectedTransferNoDeletion(List<string> items, string deletionNotes) {

        foreach (var transferNo in items)
        {

            var result = deletePendingSrv.SaveDeletionPending(transferNo, SessionUserInfo.Username, deletionNotes);

        }
        return Json(BaseVariable.DEFAULT_SUCCESS);


    }

ВИД:

Выбор значения нескольких флажков с помощью атрибута data-value.

Sample Image of my Project

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вам необходимо пройти через все отмеченные флажки и сгенерировать массив на основе атрибута data-value

var items = $('input[type="checkbox"]:checked').map(function () {
    return $(this).data('value');
}).get();

Вы не указали в вопросе, откуда взято значение для deletionNotes, но при условии, что оно является входным, тогда

var deletionNotes = $(someElement).val();

Затем вы можете использовать ajax для отправки данных на ваш контроллер

$.ajax({
    type: 'post',
    url: '@Url.Action("SelectedTransferNoDeletion")', // assumes its in the same controller
    contentType: 'application/json',
    data: JSON.stringify({ items: items, deletionNotes: deletionNotes }),
    dataType: 'json'
    success: function(response) {
        ....
    },
    ....
});
0 голосов
/ 07 ноября 2018

Вы можете использовать слушатель событий javascript для добавления значения data-value в массив, тогда вам просто нужно передать этот массив в качестве параметров в контроллер.

Простое решение выглядит так

 @foreach (var item in Model.ReportTrfPendingList)
            {
            <tr>
                <td><input type="checkbox" onClick="checkBoxOnClicked()" data-value="@item.trfbch"/></td>
                <td>@item.trfpon</td>
                <td>@item.dptnam</td>
                <td>@item.trfbch</td>
                <td><button type="button" class="btn btn-primary deleteBtn" data-value="@item.trfbch">Delete</button></td>

                <td>@CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(Convert.ToInt32(@item.trfsdt.Value.ToString().Substring(2, 2)))&nbsp; @item.trfsdt.Value.ToString().Substring(4, 2)&nbsp;&#44; @DateTime.Now.Year.ToString().Substring(0, 2)@item.trfsdt.Value.ToString().Substring(0, 2)</td>



            </tr>

            }
        </tbody>


  <script>
    var selectedValues = []
    function checkBoxOnClicked(e){
       var value = e.target.getAttribute("data-value");
       if(selectedValues.includes(value)) // ES6 or selectedValues.indexOf(value) >= 0 // older browser{
          selectedValues.pop(value);
       }
       else {
          selectedValues.push(value);
       }
    }
  </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...