0

ショッピングカートを作っています。リストビュー内にドロップダウンリストがあります。eval("stock") に従って、0 から在庫または 10 までの数値の範囲を単純に追加したい。

<% int range = atoi(eval("..")) // don't know the correct conversion syntax, not to that point yet..
if(range >10)
 range = 10
for(i = 0; i < range; i++){
 dropdown1.Item.append( new listitem...)
} 
%>

関数呼び出しでそれをやろうとしましたが、わかりませんでした。スクリプトタグとcsファイルの両方で試しました。

私が正しい方向に私を向けることができるどんな助けも素晴らしいでしょう. 私は新しく、これを何時間も研究してきました。50 ドルの本が 2 冊ありますが、これらのリストビュー テンプレート アイテムでは役に立ちません。

     <AlternatingItemTemplate>
            <span style="">
            <asp:Label ID="productNameLabel" runat="server" 
                Text='<%# Eval("productName") %>' />
            <br />
            <asp:Image runat="server" height = "300" ImageUrl='<%# Eval("img") %>'></asp:Image>
            <br />
            Description:<br />
            <asp:Label ID="itemNotesLabel" runat="server" Text='<%# Eval("itemNotes") %>' />
            <br />

            stock:
            <asp:Label ID="stockLabel" runat="server" Text='<%# Eval("stock") %>' />
            <br />
            price:
            <asp:Label ID="priceLabel" runat="server" Text='<%# "$"+ Eval("price")+".00" %>' />
            <br />

            Quantitiy:<asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList> 

            <br />

            <asp:LinkButton id="addPro" runat="server" CommandArgument='<%# Eval("productNo") %>' onCommand ="addPro_Click">Add To Cart</asp:LinkButton>
            <br /><br /><br />
<br /></span>
        </AlternatingItemTemplate>
4

2 に答える 2

1

この例では、ListView が特定の Stock を見つけるための ProductId のデータキーがあると仮定しています。コード ビハインドでドロップダウン リストにデータを入力するために使用する OnItemDataBound メソッドを追加しました。

マークアップ

<asp:ListView ID="lvStock" runat="server" OnItemDataBound="lvStock_ItemDataBound" .... >


コードビハインド

 protected void lvStock_ItemDataBound(object sender, ListViewItemEventArgs e)
 {

       if (e.Item.ItemType == ListViewItemType.DataItem) 
       {
           // Get the Product Id (or whatever ID it is)
           ListView listView = sender as ListView;
           int index = e.Item.DataItemIndex;
           DataKey dataKey = listView.DataKeys[index];
           int productId = Convert.ToInt32(dataKey["ProductId"]);

           // Get the stock value from your DB or wherever you get it from
           int stock = GetStockById(productId);


           if (stock > 10)
               stock = 10;

           // Get the stock drop down list
           DropDownList ddlListStock = (DropDownList )e.Item.FindControl("DropDownList1");

           // add the values to the drop down list
           for (int i = 0; i <= stock; i++)
           {
                ddlListStock.Items.Add(i.ToString());
           }
       }
  }
于 2012-12-05T07:19:29.650 に答える
0

各項目に追加されるコントロールを設定するには、のItemDataBoundイベントを処理する必要があります。ListViewDropDownList

デモ:

マークアップ (.aspx) コード

<asp:ListView ID="ListView1" runat="server">
    <ItemTemplate>
    <p>
        <asp:Label ID="stock" runat="server" Text='<%#Eval("Stock") %>'></asp:Label>
        <asp:DropDownList ID="stockQty" runat="server"></asp:DropDownList>
    </p>
    </ItemTemplate>
</asp:ListView>

コード ビハインド (.cs)

public class Foo
{
    public int Stock { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<Foo> fooList = new List<Foo>()
        {
                new Foo(){ Stock=3},
                new Foo(){ Stock=5}
        };
        ListView1.ItemDataBound += (sa, ea) =>
            {
                int stock = int.Parse((ea.Item.FindControl("Stock") as Label).Text);
                DropDownList stockQty = ea.Item.FindControl("StockQty") as DropDownList;

                for (int i = 0; i <= stock; i++)
                    stockQty.Items.Add(i.ToString());
            };

        ListView1.DataSource = fooList;
        ListView1.DataBind();
    }
}
于 2012-12-05T07:04:11.923 に答える