Невозможно поддерживать развернутое или свернутое состояние панели внутри повторителя при обратной передаче страницы - PullRequest
0 голосов
/ 20 мая 2019

Я использую asp: Панель внутри asp: Repeater для отображения нескольких таблиц.Теперь все таблицы по умолчанию находятся в свернутом состоянии.Существует класс с именем «свернутая карта».Теперь проблема в том, что когда пользователь раскрывает его и нажимает кнопку, чтобы вызвать обратную передачу, панель не будет оставаться в развернутом состоянии.Поскольку есть несколько таблиц, я не понимаю, как это делается.

Я пытался использовать скрытое поле, но он хранит только одно значение за раз.

Javascript, который я пробовал:

<script type="text/javascript">
        function setPanelState() {
            var x = document.getElementsByClassName("PanelStatusHF");
            x.value = "1";
        }
    </script>

ниже - моя разметка aspx:

<div class="card-body">
                            <div class="row">
                                <asp:Repeater ID="rptrTables" runat="server" OnItemDataBound="rptrTables_ItemDataBound">
    <ItemTemplate>
        <div class="col-md-6">
            <asp:Panel ID="dvTable" runat="server" CssClass="card card-info collapsed-card" ClientIDMode="Static">
                <div class="card-header with-border">
                    <h3 class="card-title">
                        <asp:Label ID="lblTableNumber" runat="server" Text='<%# Eval("TableName") %>'></asp:Label></h3>
                    <asp:HiddenField ID="TableStatusHF" runat="server" Value='<%# Eval("TableStatus") %>' />
                    <asp:HiddenField ID="PanelStatusHF" runat="server" Value="0" CssClass="PanelStatusHF" />
                    <div class="card-tools">
                        <button type="button" class="btn btn-tool" data-widget="collapse">
                            <i class="fa fa-minus"></i>
                        </button>
                    </div>
                </div>
                <div class="card-body" style="height:350px; overflow:scroll">
                    <div class="row">
                        <div class="col-md-12">
                            <div class="form-group">
                                <asp:GridView ID="grdOrder" runat="server" AutoGenerateColumns="false" AllowPaging="true"
                                    CssClass="table table-bordered table-hover table-responsive" GridLines="None"
                                    PageSize="10" ShowFooter="true" OnRowDataBound="gvRowDataBound">
                                    <Columns>
                                        <asp:CommandField ShowDeleteButton="true" ControlStyle-CssClass="btn btn-danger fa fa-trash"
                                            DeleteText="" HeaderText="Remove" />
                                        <asp:TemplateField HeaderText="Items" ItemStyle-Wrap="false" HeaderStyle-Wrap="false">
                                            <ItemTemplate>
                                                <asp:DropDownList ID="drpItemname" runat="server" Width="165px" CssClass="form-control select2" OnSelectedIndexChanged="GetItemDetails" AutoPostBack="true">
                                                </asp:DropDownList>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Price">
                                            <ItemTemplate>
                                                <asp:TextBox ID="lblUnitPrice" runat="server" CssClass="form-control" Text='<%# Eval("Column2")%>'></asp:TextBox>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Qty">
                                            <ItemTemplate>
                                                <asp:TextBox ID="lblQuantity" runat="server" CssClass="form-control" Text='<%# Eval("Column3")%>' OnTextChanged="CalculateLineTotal" AutoPostBack="true" TextMode="Number"></asp:TextBox>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Line Total">
                                            <ItemTemplate>
                                                <asp:TextBox ID="lblLineTotal" runat="server" CssClass="form-control" Text='<%# Eval("Column4")%>'></asp:TextBox>
                                            </ItemTemplate>
                                            <FooterStyle HorizontalAlign="Right" />
                                            <FooterTemplate>
                                                <asp:Button ID="ButtonAdd" runat="server" CssClass="btn btn-primary" Text="Add" OnClick="AddItem" />
                                            </FooterTemplate>
                                        </asp:TemplateField>
                                    </Columns>
                                </asp:GridView>
                            </div>
                        </div>
                        <div class="col-md-3">
                             <div class="form-group">
                                 <label>Sub Total</label>
                                 <asp:TextBox ID="txtSubTotal" runat="server" CssClass="form-control" placeholder="Sub Total" Enabled="false" Text="0"></asp:TextBox>
                             </div>
                        </div>
                        <div class="col-md-3">
                            <div class="form-group">
                                <label>Enter GST %</label>
                                <asp:TextBox ID="txtGst" runat="server" CssClass="form-control" placeholder="GST %" TextMode="Number" Text="0"></asp:TextBox>
                            </div>
                        </div>
                        <div class="col-md-3">
                             <div class="form-group">
                                 <label>Grand Total</label>
                                 <asp:TextBox ID="txtGrandTotal" runat="server" CssClass="form-control" placeholder="Grand Total" Enabled="false" Text="0"></asp:TextBox>
                             </div>
                        </div>
                        <div class="col-md-6">
                             <div class="form-group">
                                 <label>Customer Name</label>
                                 <asp:TextBox ID="txtCustomerName" runat="server" CssClass="form-control" placeholder="Customer Name"></asp:TextBox>
                             </div>
                        </div>
                        <div class="col-md-6">
                             <div class="form-group">
                                 <label>Customer Mobile</label>
                                 <asp:TextBox ID="txtCustomerMobile" runat="server" CssClass="form-control" placeholder="Mobile Number"></asp:TextBox>
                             </div>
                        </div>                        
                    </div>
                </div>
                <div class="card-footer">
                    <div class="pull-right">
                        <asp:Button ID="btnSubmit" runat="server" CausesValidation="false" TabIndex="2" CssClass="btn btn-primary"
                            Text="Print KOT" />
                        <asp:Button ID="Button1" runat="server" CausesValidation="false" TabIndex="2" CssClass="btn btn-primary"
                            Text="Print Final Bill" />
                        <asp:Button ID="Button2" runat="server" CausesValidation="false" TabIndex="2" CssClass="btn btn-primary"
                            Text="Complete Order" />
                    </div>
                </div>
            </asp:Panel>
            <%--<div id="dvTable" runat="server" class="card card-info  collapsed-card">--%>

            <%--</div>--%>
        </div>
    </ItemTemplate>
</asp:Repeater>
<br />
<%--<asp:Button Text="Save" runat="server" OnClick="Save" />--%>
                            </div>
                        </div>

ниже - мой код c #:

protected void rptrTables_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            foreach (RepeaterItem RepeaterItems in rptrTables.Items)
            {
                Panel divTable = (Panel)e.Item.FindControl("dvTable");
                HiddenField TableStatus = (HiddenField)e.Item.FindControl("TableStatusHF");
                HiddenField PanelStatus = (HiddenField)e.Item.FindControl("PanelStatusHF");

                if (PanelStatus.Value == "0")
                {
                    if (TableStatus.Value == "1")
                    {
                        divTable.CssClass = divTable.CssClass.Replace("card card-primary collapsed-card", "card card-danger");
                    }
                    else if (TableStatus.Value == "0")
                    {
                        divTable.CssClass = divTable.CssClass.Replace("card card-danger collapsed-card", "card card-primary");
                    }
                }
                else if (PanelStatus.Value == "1")
                {
                    if (TableStatus.Value == "1")
                    {
                        divTable.CssClass = divTable.CssClass.Replace("card card-primary collapsed-card", "card card-danger collapsed-card");
                    }
                    else if (TableStatus.Value == "0")
                    {
                        divTable.CssClass = divTable.CssClass.Replace("card card-danger collapsed-card", "card card-primary  collapsed-card");
                    }
                }
            }
        }
    }

Я публикую скриншот проблемы ниже: Screenshot

...