0

リストビューでテキストボックスを読み込もうとしています。これはショッピング カートであり、「新しい数量」が入力されたときに手動で Cookie を編集する必要があります。ドロップダウン ボックスに対して行ったことを使用しようとしていますが、 datasourceは、テキストボックスの値へのアクセスを妨げている違いです。

奇妙なことは、それが null になっていないということです。値が得られていないだけですか? ラベルに他のものを追加したので、それがラベルの呼び方ではないことはわかっています。私がオンラインで見つけたすべての結果は、listview1.items[0].subitems[0] などの無効なものを呼び出しています。これは、呼び出すことができるメンバーではありません。

どんな助けでも大歓迎です

ボタンハンドラ

 protected void editQ_Click(Object sender, CommandEventArgs e)
    {

        LinkButton lbSender = (LinkButton)sender;
        TextBox tb = (TextBox)lbSender.FindControl("tb1"); // this is the textbox
        productTableAdapter ad = new productTableAdapter();
        int idIn = int.Parse(e.CommandArgument.ToString());
        HttpCookie c = Request.Cookies["cart"];
        Label2.Text = tb.Text.ToString();
        // Label2.Text = tb.Text; doesn't work either.
        if (tb == null)
        {
            Label2.Text = "NULL ERROR";
        }

           ....



    }

リストビュー

<asp:ListView ID="ListView1" runat="server" DataKeyNames="productNo" 
         >
        <AlternatingItemTemplate>
            <span style="">productNo:
            <asp:Label ID="productNoLabel" runat="server" Text='<%# Eval("productNo") %>' />
            <br />
            Name:
            <asp:Label ID="productNameLabel" runat="server" Text='<%# Eval("productName") %>' />
            <br />
            Quantity:
            <asp:Label ID="productQuantityLabel" runat="server" Text='<%# Eval("Quantity") %>' />

           <asp:TextBox id = "tb1" runat="server"></asp:TextBox>
           <asp:LinkButton id="editQ" runat="server" CommandArgument='<%# Eval("productNo") %>' onCommand ="editQ_Click">Change Quantity</asp:LinkButton>

            <br />
            price:
            <asp:Label ID="priceLabel" runat="server" Text='<%# Eval("price") %>' />

            <br />
            <asp:Image ID = "img" runat="server" height = "150" ImageUrl='<%# Eval("imgURL")%>'></asp:Image>

            <br />
<br /></span>
        </AlternatingItemTemplate>
4

1 に答える 1

2

FindControlコンテナ内のコントロールを見つけるために使用されます。マークアップから、LinkBut​​ton はテキスト ボックスのコンテナーではありません。あなたのテキストボックスはあなたのListViewにあります

これを試してみてください。

TextBox tb = (TextBox)lbSender.NamingContainer.FindControl("tb1"); 
于 2012-12-07T12:19:05.383 に答える