我在自己的婚礼网站上工作,所以我们可以让我们的客人从我们的礼物清单中保留物品(这是我们将在蜜月期间做的事情)并在当天给我们检查。
我有一个DataList,它从我的MSSQL中检索一个表并在我的aspx页面上显示它。此表中存储的值之一是数量。
我想要的是能够填充asp:DropDownList,其中包含Quantity字段中的选项数量,然后单击一个按钮,这会将该项目的X添加到购物车(购物车运行正常,带有添加一个选项的按钮) 。我挣扎的地方实际上正在填充下拉列表。我目前的思路是让C#函数根据数量在for循环中添加新项目。
以下是我正在尝试的内容
<asp:DataList ID="DataList2" runat="server" DataKeyField="pKey" DataSourceID="WeddingDatabase">
<ItemTemplate>
<div class="Gift">
<!-- Other fields ignored for purpose of quesion -->
Quantity:
<asp:Label ID="QuantityLabel" runat="server" Text='<%# Eval("Quantity") %>' />
<br />
<asp:DropDownList ID="QuantityDropdown" runat="server" />
<% FillDropdown((int)Eval("Quantity")); %>
<br />
<asp:Button ID="Btn" runat="server" Text="Add to Cart" CommandArgument='<%# Eval("pKey") %>' OnCommand="AddToCart" />
</div>
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:DB_9EF896_weddingConnectionString %>"
SelectCommand="SELECT * FROM [Giftlist] ORDER BY [Title] ASC"></asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource3" runat="server"></asp:SqlDataSource>
public void FillDropdown(int inQuantity)
{
DropDownList dropdown = this.FindControl("QuantityDropdown") as DropDownList;
for (int i = 0; i < inQuantity; i++)
{
dropdown.Items.Add(new ListItem("" + (i+1)));
}
}
现在我正努力让它编译。虽然我知道自己想要做什么,但是我的代码在这里占了上风。
非常感谢任何帮助!
答案 0 :(得分:0)
为什么不配置另一个SqlDataSource
并将其绑定到您的下拉列表,如
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:DB_9EF896_weddingConnectionString %>"
SelectCommand="SELECT distinct quantity FROM [Giftlist]"></asp:SqlDataSource>
<asp:DropDownList DataValueField="quantity" SelectedValue='<%# Eval("quantity") %>'
ID="QuantityDropdown" runat="server" DataSourceID="SqlDataSource3"
DataTextField="quantity"></asp:DropDownList>
答案 1 :(得分:0)
我的解决方案是通过C#函数设置DataSource,传递Datalist中该项目的数量。
<asp:DropDownList ID="QuantityDrop" runat="server" DataSource='<%# FillDropdown((int)Eval("Quantity")) %>' />
public ArrayList FillDropdown(int inCount)
{
ArrayList values = new ArrayList();
for (int i = 0; i < inCount; i++)
{
values.Add("" + (i + 1)); // increment i and add.
}
return values;
}