私は異なるタイプの2つのリストを持っています -
リスト リスト
db テーブルは次のように構成されています。
Product
-----------
ProductID - PK
Name
Description
Price
OwnerID - FK
...
SelectedProducts
---------------
SelectedProductID - PK
ProductID - FK
Active
そのため、ユーザーに製品のリストが表示されるページがあり、製品の一部またはすべてを選択できます。現在、製品の完全なリストを表示する編集ページを作成しようとしていますが、既に選択されている製品のチェックボックスをチェックしています。
私は次のアプローチを試しましたが、どちらもある種の重複を与えます-
アプローチ 1 このアプローチでは、製品のリストが表示され、製品が既に選択されているため、製品が複製されます。
<div style="margin-left: 10px; margin-top: 10px;">
<% foreach (var product in Model.Products) { %>
<% foreach (var p in Model.SelectedProducts)
{ %>
<% if (p.ProductID == product.ProductID)
{ %>
<div style="float: left; line-height: 18px; padding: 2px; margin: 2px; vertical-align: middle;
border: 1px solid grey; width: 282px;">
<input type="checkbox" name="PRODUCT_<%: product.Name %>" value="<%: ViewData["PRODUCT_" + product.ProductID] %>" checked="checked" style="vertical-align: middle; padding-left: 5px;" />
<%: Html.Truncate(product.Name, 35) %>
</div>
<% } %>
<% } %>
<div style="float: left; line-height: 18px; padding: 2px; margin: 2px; vertical-align: middle;
border: 1px solid grey; width: 282px;">
<input type="checkbox" name="PRODUCT_<%: product.Name %>" value="<%: ViewData["PRODUCT_" + product.ProductID] %>" style="vertical-align: middle; padding-left: 5px;" />
<%: Html.Truncate(product.Name, 35) %>
</div>
<% } %>
</div>
アプローチ 2
<div style="margin-left: 10px; margin-top: 10px;">
<% foreach (var product in Model.Products) { %>
<% foreach (var p in Model.SelectedProducts)
{ %>
<% if (p.ProductID == product.ProductID)
{ %>
<div style="float: left; line-height: 18px; padding: 2px; margin: 2px; vertical-align: middle;
border: 1px solid grey; width: 282px;">
<input type="checkbox" name="PRODUCT_<%: product.Name %>" value="<%: ViewData["PRODUCT_" + product.ProductID] %>" style="vertical-align: middle; padding-left: 5px;" />
<%: Html.Truncate(product.Name, 35) %>
</div>
<% } else { %>
<div style="float: left; line-height: 18px; padding: 2px; margin: 2px; vertical-align: middle; border: 1px solid grey; width: 282px;">
<input type="checkbox" name="PRODUCT_<%: product.Name %>" value="<%: ViewData["PRODUCT_" + product.ProductID] %>" checked="checked" style="vertical-align: middle; padding-left: 5px;" />
<%: Html.Truncate(product.Name, 35) %>
</div>
<% } %>
<% } %>
<% } %>
</div>
私はそれが単なるばかげた論理エラーであることを知っていますが、新鮮な目で行うことができます!