Как получить значение скрытого поля для установки в таблице, которая использует нумерацию страниц? - PullRequest
1 голос
/ 13 февраля 2020

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

HTML:

<div id="divTableContainer" runat="server">
    <table id="tblAssessmentExtracts" class="table table-striped table-sm table-hover ">
        <thead>
            <tr>
                <th>Consumer</th>
                <th>Assessment</th>
                <th>Completed</th>
                <th></th>
            </tr>
        </thead>
        <tbody>
            <asp:Repeater ID="rptAssessmentExtractQueue" runat="server" OnItemCommand="rptAssessmentExtractQueue_ItemCommand">
                <ItemTemplate>
                    <tr class="assessment-extract-block">
                        <td><%# Eval("ConsumerName") %>
                        </td>
                        <td><%# Eval("SurveyName") %>
                        </td>
                        <td><%# Eval("CompletionDate") %></td>
                        <td class="buttoncell">
                            <asp:LinkButton ID="btnExportRecord" runat="server" Text="Export" CommandArgument='<%# Eval("Id") %>' />
                            <asp:HiddenField ID="hdAssessmentId" runat="server" Value='<%# Eval("Id") %>' />
                            <span class="selection"><asp:HiddenField ID="hdAssessmentSelected" runat="server" /></span>
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:Repeater>
        </tbody>
    </table>
</div>

JavaScript:

<script type="text/javascript">

        $(document).ready(function () {
            var table = $('#tblAssessmentExtracts').DataTable({
                "pageLength": 25,
            });
        });

        function selectBlock(elementIndex, element) {
            var selectedField = $(element).find('.selection input[type="hidden"]');

            if ($(element).hasClass("table-info") === false) {
                $(element).addClass("table-info");
            }

            if (selectedField.length > 0) {
                selectedField.val("true");
            }
        }
        function deselectBlock(elementIndex, element) {
            var selectedField = $(element).find('.selection input[type="hidden"]');

            if ($(element).hasClass("table-info")) {
                $(element).removeClass("table-info");
            }

            if (selectedField.length > 0) {
                selectedField.val("");
            }
        }
        $('.assessment-extract-block').click(function (e) {

            var selectedField = $(this).find('.selection input[type="hidden"]');
            if (selectedField.length > 0) {
                if (selectedField.val() === "true") {
                    deselectBlock(0, $(this));
                } else {
                    selectBlock(0, $(this));
                }
            }
        });

    </script>

C#:

private IEnumerable<long> getSelectedResponses()
    {
        List<long> assessmentIds = new List<long>();

        foreach (RepeaterItem riAssessment in rptAssessmentExtractQueue.Items)
        {
            HiddenField hdAssessmentSelected = riAssessment.FindControl("hdAssessmentSelected") as HiddenField;
            HiddenField hdAssessmentId = riAssessment.FindControl("hdAssessmentId") as HiddenField;
            bool export = false;
            if (bool.TryParse(hdAssessmentSelected.Value, out export) && export)
            {
                long assessmentId;
                if (long.TryParse(hdAssessmentId.Value, out assessmentId) && assessmentId > 0)
                {
                    assessmentIds.Add(assessmentId);
                }
            }
        }

        return assessmentIds;
    }
...