在按钮中获取TextBox Text值

时间:2016-11-27 01:18:28

标签: c# css

我试图在代码隐藏中获得txt_MRP的值,但它一直在给我

  

此当前上下文中不存在名称“txt_MRP”

为什么这个参考不可用?我怎么能得到它?

(我按下的按钮是btn_add_to_cart_Click

    <div class="row">

        <div class="col-lg-2"></div>
        <div class="col-lg-4">

            <asp:DataList ID="DataList3" runat="server" DataSourceID="SqlDataSource1">
                <ItemTemplate>
                    <ul id="etalage">
                        <li>
                            <img id="Img1" class="etalage_thumb_image" runat="server" src='<%# Eval("Fotografia1") %>' />
                            <img id="Img2" class="etalage_source_image" runat="server" src='<%# Eval("Fotografia2") %>' />

                        </li>


                    </ul>
                    <br />
                </ItemTemplate>
            </asp:DataList>
        </div>
        <div class="col-lg-6">

            <asp:DataList ID="DataList1" runat="server" DataKeyField="ID" DataSourceID="SqlDataSource1" >



                <ItemTemplate>
                    <div id="product_name_width">
                        <asp:Label ID="Product_nameLabel" runat="server" CssClass="product_name" Text='<%# Eval("Nombre") %>' />
                        <br />
                    </div>
                    <span id="rs">₡</span><asp:Label ID="MRPLabel" CssClass="price" runat="server" Text='<%# Eval("Precio") %>' />
                    <br />
                    <br />
                    <span id="brand_name">Marca</span>
                    <asp:Label ID="BrandLabel" runat="server" CssClass="brand" Text='<%# Eval("Marca") %>' />
                    <br />

                    </div>

                        <div class="form-group">
                            <label>  Cantidad </label>
                            <asp:TextBox CssClass="form-control" ID="txt_MRP" runat="server" ></asp:TextBox>


                    </div>

                    <div id="buy_now_css" runat="server">
                        <ul>
                            <li>
                                <asp:Button ID="btn_add_to_cart" CssClass="btn btn-primary" runat="server" Text="Añadir al Carrito" OnClick="btn_add_to_cart_Click" />
                            </li>
                            <li>
                                <asp:Button ID="btn_buy_now" CssClass="btn btn-success" runat="server" Text="Comprar" OnClick="btn_buy_now_Click" />
                            </li>
                        </ul>
                    </div>
                </ItemTemplate>
            </asp:DataList>

            <asp:DataList ID="DataList2" runat="server" DataKeyField="ID" DataSourceID="SqlDataSource1">
                <ItemTemplate>
                    <h2>Descripcion</h2>
                    <div id="Description_width">
                        <asp:Label ID="DetailLabel" CssClass="description" runat="server" Text='<%# Eval("Descripcion") %>' />
                    </div>

                </ItemTemplate>
            </asp:DataList>

        </div>
    </div>

2 个答案:

答案 0 :(得分:1)

您必须分配代理或按钮。例如:

var button = new Button();
button.Click += new EventHandler("btnAddToCart");

您还可能需要CommandArgument才能发回特定值。但实际注册点击事件就像上面那样。

答案 1 :(得分:1)

txt_MRP 不存在,因为它位于 DataList 控件中。它仅在Control的范围内可用。&#xA;如果要获取值,则必须使用其他方法。

&#xA;&#xA;

从<更改按钮事件代码> Onclick 到 OnCommand 并添加 CommandName 并将 ItemIndex 设置为 CommandArgument

&#xA;&#xA;
 &lt; asp:Button ID =“btn_add_to_cart”CommandName =“addToCart”CommandArgument ='&lt;%#Container.ItemIndex%&gt;' CssClass =“btn btn-primary”runat =“server”Text =“AñadiralCarrito”OnCommand =“btn_add_to_cart_Command”/&gt;&#xA;  
&#xA;&#xA;

在代码中

&#xA;&#xA;
  protected void btn_add_to_cart_Command(object sender,CommandEventArgs e)&#xA; {&#xA; //检查正确的命令名&#xA; if(e.CommandName ==“addToCart”)&#xA; {&#XA; //从命令参数&#xA获取行号int itemIndex = Convert.ToInt32(e.CommandArgument);&#xA;&#xA; //使用findcontrol&#xA;找到正确行中的texbox TextBox textBox = DataList1.Items [itemIndex] .FindControl(“txt_MRP”)为TextBox;&#xA;&#xA; //用值&#xA做一些东西Label1.Text = textBox.Text;&#xA; }&#XA;}&#XA;  
&#XA;