TheBigBearNow Ответов: 1

C# MVC checkbox javascript ajax или C# action каким образом я должен это сделать?


Всем привет,
У меня есть представление, в котором есть таблица со строками записей. Перед каждой строкой я поставил отдельный флажок. В настоящее время я нахожусь в процессе определения того, установлен ли этот флажок или нет. Мне было интересно, должен ли я сделать свой щелчок по кнопке с помощью javascript и ajax, чтобы определить, какие записи имеют выбранный флажок с помощью этих флажков я распечатаю отчет rdlc о том, что было выбрано. Или мне следует использовать кнопку HTMLActionlink, чтобы перейти прямо к контроллеру и посмотреть, что было выбрано. Какой путь будет быстрее и лучше? Кроме того, как правильно я должен это сделать?
MVC View
<input type="button" class="btn btn-primary" name="command" id="btnGetChecks" value="Generate Selected" />
<table class="table" id="maintbl"><thead>…</thead>
<tbody id="maintblbody">
                @for (int i = 0; i < Model.ListQuotes.Count; i++)
                {
                    var current = Model.ListQuotes[i];
                    <tr>
                        <td>
                            @Html.CheckBox(i+"_Row", true, new { value = @Model.ListQuotes[i].QuoteID })
                            </td><td>
                            //<input type="checkbox" class="checkbox" name="checks" id="@(i + "_Row")" value="@Model.ListQuotes[i].QuoteID" />
                        </td>
                        @for (int j = 0; j < Model.Settings.Columns.Length; j++)
                        {
                            if (Model.Settings.Show[j])
                            {
                                var quote = current.GetType().GetProperties().Where(x => x.Name.Equals(Model.Settings.Columns[j])).First();
                                <td style="padding-right:20px;">@quote.GetValue(current, null)</td>
                            }
                        }
                        <td>
                            <button type="button" class="openModal btn btn-danger" data-quoteid="@Model.ListQuotes[i].QuoteID">
                                Edit
                            </button>
                        </td>
                    </tr>
                }
</tbody>
<script>
$('#btnGetChecks').on('click', function () {
            var quotes = [];
            var quoteid = $(this).attr("value");
            var chkboxtable = $('#maintbl');
            var 
            //$('input:checked').each(function() {
            //    quotes.push($(this).attr("value"));
            //});    with 0 -  ^(0|\+?[1-9]\d*)$         /^-?[0-9]+$/
            // $(this).val($(this).val().replace(/[^\d].+/, ""));
            // if (!(keyCode >= 48 && keyCode <= 57)
            $('input[type=checkbox]').each(function () {
                if (this.checked==true) {
                    if (IsPositiveInteger(quoteid)) {
                        quotes.push($(this).attr("value"));

                    }
                }
            });

            alert(quotes);
        });
<script>


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

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

1 Ответов

Рейтинг:
2

deepak21188

Вы можете использовать любой из упомянутых вами подходов, но таким образом вы не сможете поддерживать состояние приложения( что делать, если вы измените выбор флажка после получения списка флажков).
Другой способ сделать это-добавить свойство "public bool is checked {get; set;}" в объект модели для каждой строки. При установке флажка обновите это свойство. Всякий раз, когда вы хотите создать отчет, используйте это свойство, чтобы определить, следует ли включать эту строку в отчет или нет.