Click here to Skip to main content
14,360,161 members
Rate this:
Please Sign up or sign in to vote.
Hello everyone,
I have a view that has a table with rows of records. In front of each row I added a separate checkbox. I am currently in the process of determinine if this checkbox ischecked or not. I was wondering if I should do my button click with javascript and ajax to determine what records have a selected checkbox with these checkboxes I will print out a rdlc report of what was selected. Or should I use a HTMLActionlink button to go straight to a controller and see what was selected. What way would be faster and better? Also what is the proper way I should do this?
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>


What I have tried:

Here is what I currently have im very curious to hear what you all have to say. I have the id of each quote attached to the checkbox. I wanted to push the valid ones to an array but so far my current code doesn’t do it yet. I feel I am close to having it.
Posted
Updated 7-Nov-19 10:06am

1 solution

Rate this:
Please Sign up or sign in to vote.

Solution 1

You can use do any of the approaches you mentioned but in this way you won't be able to maintain the state of application( what if you change the checkbox selection after fetching the list of checkboxes).
Another way of doing it is to add a property "public bool is checked {get; set;}" in the model object for each row. On clicking the checkbox, update this property. Whenever you want to generate the report use this property to determine whether to include this row in the report or not.
   
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100