2
<asp:Repeater ID="Cartridges" runat="server" onitemcommand="Cartridges_ItemCommand">
    <ItemTemplate>
        <p class="cartprice"><%#String.Format("{0:C}", Eval("Price"))%></p>
        <hr class="hr4" /> 
        <p class="cartqty">QTY <asp:TextBox ID="cartQty" Text="0" runat="server"></asp:TextBox> </p>
        <div class="cartbuy2"><asp:LinkButton ID="buy" runat="server" CommandName="AddtoCart" CommandArgument=<%#Eval("cartID") %> Text="Buy"></asp:LinkButton></div>
   </ItemTemplate>
</asp:Repeater>

CommandArgument 内でテキストボックスの値を渡すにはどうすればよいですか? すみません、完全に負けてしまいました…

4

3 に答える 3

3

試しましたか:CommandArgument='<%#Eval("cartID") %>'

これは一重引用符で囲まれているため、あなたのものとは異なります。これは正しい構文だと思います。

于 2011-06-20T15:12:09.877 に答える
2

FindControl を使用して、リピーター アイテム内の他のアイテムを取得します。例えば:

 protected void repeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
 {
      LinkButton lb = (LinkButton)e.CommandSource;
      string textBoxValue = ((TextBox)lb.Parent.FindControl("cartQty")).Text;         
 }
于 2011-06-20T15:17:20.247 に答える
0

cartId を linkbutton の onItemDataBound にバインドしてから、onItemCommand にアクセスする必要があります。コードを修正しました。試してみてください

    <asp:Repeater ID="Cartridges" runat="server" onitemcommand="Repeater_OnItemCommand" OnItemDataBound="Repeater_OnItemDataBound">
<ItemTemplate>
    <p class="cartprice"><%#String.Format("{0:C}", Eval("Price"))%></p>
    <hr class="hr4" /> 
    <p class="cartqty">QTY <asp:TextBox ID="cartQty" Text="0" runat="server"></asp:TextBox> </p>
    <div class="cartbuy2"><asp:LinkButton ID="buy" runat="server" CommandName="AddtoCart" Text="Buy"></asp:LinkButton></div>

onItemdatabound は次のようになります

 protected void Repeater_OnItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {

        //your code...

          LinkButton add = (LinkButton)e.Item.FindControl("buy");
                  add.CommandArgument = cartID.ToString();

    }

そして、このようにアイテムコマンドのテキストボックスにアクセスできます

 protected void Repeater_OnItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "AddtoCart")
            {
                LinkButton btnEdit = (LinkButton)e.CommandSource;
                if (btnEdit != null)
                {
                    string editId = btnEdit.CommandArgument;
                    string text = ((TextBox)e.Item.FindControl("cartQty")).Text;
                    //do some stuff with your cartid and quantity
                }
            }
}

リンクボタンを追加して正しいコマンドにバインドし、アイテムコマンドでそれらにアクセスすることにより、編集/削除コマンド引数でコードを拡張することもできますありがとう

于 2011-06-20T16:13:41.113 に答える