У меня есть вложенные ListViewУплотненный ListView с использованием двух различных sqldatasources
<asp:ListView ID="lst_productsWithDiscounts" DataKeyNames="ProductID" runat="server" DataSourceID="source_discountProducts" ItemPlaceholderID="plc_product" OnItemDataBound="lst_productsWithDiscounts_ItemDataBound">
<LayoutTemplate>
<table>
<tr>
<td>Name</td>
<td>Price</td>
<td>TVA</td>
<td>Discount</td>
<td>Price</td>
<td>New discount</td>
<td>New price</td>
</tr>
<tr id="plc_product" runat="server">
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("ProductCode").ToString()+"/"+ Eval("Name").ToString() %></td>
<td><%# Eval("SellPrice").ToString() %></td>
<td><%# Eval("TVA").ToString() %></td>
<td><%# Eval("Discount").ToString() %></td>
<td><%# BC_Common.Util.Calc(double.Parse(Eval("SellPrice").ToString()),double.Parse(Eval("Discount").ToString()),Convert.ToInt32(Eval("TVA").ToString()),1).ToString() %></td>
<td><%# Eval("NewDiscount").ToString() %></td>
<td><%# BC_Common.Util.Calc(double.Parse(Eval("SellPrice").ToString()), double.Parse(Eval("NewDiscount").ToString()), Convert.ToInt32(Eval("TVA").ToString()), 1).ToString()%></td>
</tr>
<tr>
<td colspan="7">
<asp:ListView ID="lst_variants" runat="server" DataSourceID="source_discountVariants" ItemPlaceholderID="plc_variant">
<LayoutTemplate>
<table>
<tr>
<td>Variant name</td>
<td></td>
<td>Stock</td>
<td>Reserved</td>
</tr>
<tr id="plc_variant" runat="server"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<td><%# Eval("Nume").ToString() %></td>
<td></td>
<td><%# Eval("Stock").ToString() %></td>
<td><%# Eval("Reserved").ToString() %></td>
</ItemTemplate>
</asp:ListView>
</td>
</tr>
</ItemTemplate>
protected void lst_productsWithDiscounts_ItemDataBound(object sender, ListViewItemEventArgs e)
{
source_discountVariants.SelectParameters["ProductID"].DefaultValue = lst_productsWithDiscounts.DataKeys[e.Item.DataItemIndex]["ProductID"].ToString();
ListView lst_variants = e.Item.FindControl("lst_variants") as ListView;
lst_variants.DataBind();
}
Я не знаю, почему, но вложенная ListView (lst_variants) является уникальным для всех продуктов, и это соответствует результату для последнего продукта от lst_productsWithDiscounts
Итак, как мне связать второй список с помощью sqldatasource?
Я не знал, что вы можете вложить SqlDataSource в элемент ItemTemplate ListView. Интересно. Просто любопытно, вы попробовали решение, которое я предоставил? Мне было любопытно, будет ли это так или нет. – jadarnel27
К сожалению, нет. Но я не думаю, что это сработало бы, потому что в списке было установлено DataSourceID = "source_discountVariants". В следующий раз, когда мне придется работать с вложенным списком, я попробую ваше решение только ради любопытства, и я сообщу вам о результатах. – POIR