我试图在代码隐藏中获得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>
答案 0 :(得分:1)
您必须分配代理或按钮。例如:
var button = new Button();
button.Click += new EventHandler("btnAddToCart");
您还可能需要CommandArgument
才能发回特定值。但实际注册点击事件就像上面那样。
答案 1 :(得分:1)
txt_MRP
不存在,因为它位于 DataList
控件中。它仅在Control的范围内可用。&#xA;如果要获取值,则必须使用其他方法。
从<更改按钮事件代码> Onclick 到 OnCommand
并添加 CommandName
并将 ItemIndex
设置为 CommandArgument
。
&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;