Запретить добавление дублирующих элементов в список из таблицы данных - PullRequest
0 голосов
/ 23 января 2020

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

Итак, мне нужно сохранить количество, введенное в Список.

Как я пытаюсь это сделать, это заполнить DataTable текущими продуктами. L oop выбрасывает этот Datatable и добавляет продукты, у которых есть количества, в Список, когда страница меняется или клиент выбирает следующую группу продуктов, и когда нажимается кнопка «Добавить в корзину», он добавляет все элементы в Списке к оформлению заказа. Таблица в моей таблице MySQL.

Если не существует другого и намного более простого способа заполнения представления списка без DataTable.

Это представление списка

                            OnPagePropertiesChanging="lv_groups_PagePropertiesChanging" DataKeyNames="id" OnSelectedIndexChanging="lv_groups_SelectedIndexChanging">
                            <LayoutTemplate>
                                <table class="tbl-lv" style="width: 100%; margin-top: -15px; margin-bottom: -15px; padding:10px">
                                    <tr style="height:30px">
                                        <th style="width: 50%;">Product
                                        </th>
                                        <th style="width: 10%">Unit Size
                                        </th>
                                        <th style="width: 10%">Unit
                                        </th>
                                        <th style="width: 10%">Price (per unit)
                                        </th>
                                        <th style="width: 20%">QTY
                                        </th>
                                    </tr>
                                    <asp:PlaceHolder runat="server" ID="groupPlaceHolder1"></asp:PlaceHolder>
                                    <tr style="height:30px">
                                        <td colspan="5">
                                            <asp:DataPager ID="DataPager1" runat="server" PagedControlID="lv_groups" PageSize="10">
                                                <Fields>
                                                    <asp:NextPreviousPagerField ShowLastPageButton="False" ShowNextPageButton="False" ButtonType="Button" ButtonCssClass="btn btn-primary" RenderNonBreakingSpacesBetweenControls="false" />
                                                    <asp:NumericPagerField ButtonType="Button" RenderNonBreakingSpacesBetweenControls="false" NumericButtonCssClass="btn btn-primary" CurrentPageLabelCssClass="btn disabled" NextPreviousButtonCssClass="btn" />
                                                    <asp:NextPreviousPagerField ShowFirstPageButton="False" ShowPreviousPageButton="False" ButtonType="Button" ButtonCssClass="btn btn-primary" RenderNonBreakingSpacesBetweenControls="false" />
                                                </Fields>
                                            </asp:DataPager>
                                        </td>
                                    </tr>
                                </table>
                            </LayoutTemplate>
                            <EmptyDataTemplate>
                                <table class="tbl-lv" style="width: 100%;">
                                    <tr>
                                        <th style="width: 50%;">Product
                                        </th>
                                        <th style="width: 10%">Unit Size
                                        </th>
                                        <th style="width: 10%">Unit
                                        </th>
                                        <th style="width: 10%">Price
                                        </th>
                                        <th style="width: 20%">QTY
                                        </th>
                                    </tr>
                                    <asp:PlaceHolder runat="server" ID="groupPlaceHolder1"></asp:PlaceHolder>
                                    <tr>
                                        <td colspan="5">
                                            <asp:DataPager ID="DataPager1" runat="server" PagedControlID="lv_groups" PageSize="10">
                                                <Fields>
                                                    <asp:NextPreviousPagerField ShowLastPageButton="False" ShowNextPageButton="False" ButtonType="Button" ButtonCssClass="btn btn-primary" RenderNonBreakingSpacesBetweenControls="false" />
                                                    <asp:NumericPagerField ButtonType="Button" RenderNonBreakingSpacesBetweenControls="false" NumericButtonCssClass="btn btn-primary" CurrentPageLabelCssClass="btn disabled" NextPreviousButtonCssClass="btn" />
                                                    <asp:NextPreviousPagerField ShowFirstPageButton="False" ShowPreviousPageButton="False" ButtonType="Button" ButtonCssClass="btn btn-primary" RenderNonBreakingSpacesBetweenControls="false" />
                                                </Fields>
                                            </asp:DataPager>
                                        </td>
                                    </tr>
                                </table>
                            </EmptyDataTemplate>
                            <GroupTemplate>
                                <tr style="height:30px">
                                    <asp:PlaceHolder runat="server" ID="itemPlaceHolder1"></asp:PlaceHolder>
                                </tr>
                            </GroupTemplate>
                            <ItemTemplate>
                                <asp:HiddenField ID="HiddenField1" Value='<%# Eval("id") %>' runat="server" />
                                <td style="width: 50%">
                                    <%# Eval("product_description") %>
                                </td>
                                <td style="width: 10%">
                                    <%# Eval("unit_size", "{0:#### }") %>
                                </td>
                                <td style="width: 10%">
                                    <%# Eval("unit") %>
                                </td>
                                <td style="width: 10%">
                                    <%# Eval("price") %>
                                </td>
                                <td style="width: 20%">
                                    <asp:TextBox runat="server" ID="txtQty" ForeColor="Black" Width="80%" Text='<%# Eval("qty") %>'></asp:TextBox>
                                </td>
                            </ItemTemplate>
                        </asp:ListView>

Это код, в котором я пытаюсь добавить элементы в список (я все еще зеленый в программировании, поэтому любая помощь будет оценена). Что я помещаю в оператор if?

    {
        List<CartItems> items = new List<CartItems>();

        DataTable CartTable = pd.dt_products_qty(helpers.ConnectionString, product_group_id, order_id);

        if (CartTable != null && CartTable.Rows.Count > 0)
        {
            foreach (DataRow row in CartTable.Rows)
            {
                if ()
                {
                    items.Add(new CartItems { id=row["id"].ToString(), product=row["product_description"].ToString(), unitSize=row["unit_size"].ToString(), unit=row["unit"].ToString(), price=row["price"].ToString(), qty=row["qty"].ToString() });
                }
            }
        }
        return items;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...