gcogco10 Ответов: 1

Как сделать dropdownlist из datatable?


Привет Команда

Я создал dropdownlist, но я хочу найти способ создать его внутри dataTable не в стороне, чтобы позволить пользователю выбирать внутри DataTable не снаружи, но я изо всех сил пытаюсь это сделать.

Что я уже пробовал:

<pre> // Drop downlist for WhoAttended. Model class objects

    public enum Attendees
    {
        Engineers,
        Technicians,
        Inspectors
    }



Просмотр cshtml
@using ContentManagementSystem.Models

@model EventsManagementTb
@Html.DropDownListFor(w=>w.WhoAttend, new SelectList(Enum.GetValues(typeof(Attendees))),
    
               "EventsManagementsTable" )

@{
    ViewBag.Title = "EventManagement List";
}
<hr />
<hr />
<hr />
<h2>EventManagement List</h2>
<table id="EventsManagementsTable" class="ui celled table" style="width:100%">
  

    <thead>
        <tr>
           
            <th>TrainingType</th>
            <th>TrainingDescription</th>
            <th>Price</th>
            <th>Venue</th>
            <th>Facilitator</th>
            <th>WhoAttend</th>
            <th>RSVP</th>
        </tr>
    </thead>
  

</table>
<!---DropDownlist for Who Attend-->
<select class="form-control" id="EventsManagementsTable" name="EventsManagementsTable">
<option>Engineers</option>
<option>Inspectors</option>
<option>Technicians</option>
</select>


<link href="//cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.6/semantic.min.css" rel="stylesheet" />
<link href="https://cdn.datatables.net/1.10.15/css/dataTables.semanticui.min.css" rel="stylesheet" />

@section scripts{

      <script src="//cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.15/js/dataTables.semanticui.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.6/semantic.min.js"></script>

    <script>

        $(document).ready(function () {

            $("#EventsManagementsTable").DataTable({

                "columnDefs": [
                { "width": "5%", "targets": [0] }, 
                { "className": "text-center custom-middle-align" ,"targets":[0, 1, 2, 3, 4, 5, 6] },
                ],
            
                "serverSide": "true",
                "order":[0,"asc"], 
                "processing": "true",
                "language": {
                    "processing": "processing...... please wait"
                },
                "ajax": {
                    "url": "/Dashboard/GetData",
                    "type": "POST",
                    "datatype": "JSON"
                    
                },
                "columns": [
                    {"data": "TrainingType", "name": "TrainingType"},
                    { "data": "TrainingDescription", "name": "TrainingDescription"},
                    { "data": "Price", "name": "Price"},
                    { "data": "Venue", "name": "Venue"},
                    { "data": "Facilitator", "name":"Facilitator" },
                    { "data": "WhoAttend", "name" : "WhoAttend" },
                    {"data": "RSVP", "name":"RSVP" },
                ]
                

            });

        });

   




    </script>

1 Ответов

Рейтинг:
2

Richard Deeming

Используйте render опция в соответствующем столбце для переопределения способа отображения столбца.

"columns":[
    ...
    {
        "data": "WhoAttend",
        "name": "WhoAttend",
        "render": function(value){
            return $("<select/>")
                .addClass("form-control")
                .attr("name", "WhoAttend")
                .append($("<option/>").text("Engineers"))
                .append($("<option/>").text("Inspectors"))
                .append($("<option/>").text("Technicians"))
                .val(value)
                .html();
        }
    }
    ...
]
столбцы.рендер[^]

Если вам нужен более простой способ создания HTML-кода, Вы можете использовать механизм шаблонов, например Handlebars.js[^] чтобы создать шаблон для вашей колонки.


gcogco10

Это можно сделать на стороне Ajax на мой взгляд приятель?

Richard Deeming

Возможно. Но это проблема пользовательского интерфейса, поэтому ее действительно следует обрабатывать в представлении.

gcogco10

выстрел спасибо, позволь мне это сделать.

gcogco10

последний вопрос Ричард, должны ли все столбцы быть до или после вызова функции ajax, Мой его после вызова ajax и все же он не загружается, я вижу некоторые ошибки при проверке в браузере. пожалуйста, помогите здесь.

Richard Deeming

Не имеет значения, будет ли columns свойство появляется до или после ajax собственность.

Если вам нужна помощь в исправлении ошибок, вам нужно будет опубликовать полную информацию об ошибках.

gcogco10

Вы видите, что я действительно поместил столбцы, но они не отображаются в таблице данных и не показывают ошибок при проверке. Может быть, это, возможно, у меня есть несколько записей из DataTable?

Richard Deeming

Если нет ошибок и записей, значит, что-то еще идет не так. Можете ли вы увидеть запрос XHR / AJAX в сетевых запросах? Возвращает ли он какие-либо данные?

gcogco10

загружаемый шрифт: операционная система OS/2: плохо sTypoLineGap, установка в 0: -32 (шрифт-семья: "раскрывающийся список" тип:обычный вес:400 стретч:100 ГРЦ индекс:0) Источник: data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjB5AAAAC8aaaaygntyxapfuiiaaabhaaaaexnyxnwaaaaeaaaawgaaaa … AG0AbwBvAG4ARgBvAG4AdAAgAGcAZQBuaguacgbhahqazqbkacaaygb5acaasqbjag8atqbvag8abgauaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=

Richard Deeming

Нет, вы ищете запрос XHR к вашему /Dashboard/GetData действие.

gcogco10

Запрос XHR действительно поставляется со статусом 200 с ответом на данные только данные с записями, а не тот, который я только что реализовал.

gcogco10

Ричард любезно помогает, столбец, чтобы получить рендеринг вы делаете это внутри существующего столбца или переопределить новый ниже? Мой не работает хорошо и получает эту ошибку. 92 TypeError: n[m] не определено

Richard Deeming

n[m] не определено - попытка использовать неосновной формат JSON. — Форумы DataTables[^]

Похоже, у вас есть несоответствие между количеством <th> элементы и количество элементов в вашем списке columns массив.

gcogco10

Хорошо, я исправлю это, Ричард, но я все еще застрял, не получая эту опцию выбора для работы. Моя логика есть, и даже если я устраняю неполадки вообще никаких ошибок.