2016-11-27 124 views
0

我試圖讓在代碼隱藏的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> 

回答

1

txt_MRP不存在,因爲它在DataList控制。它只在控制範圍內可用。 如果你想獲得的價值,你必須使用另一種方法。

變化從Onclick按鈕事件OnCommand並添加CommandName並設置ItemIndexCommandArgument

<asp:Button ID="btn_add_to_cart" CommandName="addToCart" CommandArgument='<%# Container.ItemIndex %>' CssClass="btn btn-primary" runat="server" Text="Añadir al Carrito" OnCommand="btn_add_to_cart_Command" /> 

而且在後面

protected void btn_add_to_cart_Command(object sender, CommandEventArgs e) 
{ 
    //check the correct commandname 
    if (e.CommandName == "addToCart") 
    { 
     //get the row number from the commandargument 
     int itemIndex = Convert.ToInt32(e.CommandArgument); 

     //find the texbox in the correct row with findcontrol 
     TextBox textBox = DataList1.Items[itemIndex].FindControl("txt_MRP") as TextBox; 

     //do stuff with the value 
     Label1.Text = textBox.Text; 
    } 
} 
代碼
1

你必須指定代表或按鈕。例如:

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

您可能還需要一個CommandArgument,才能夠發送一個特定的值返回。但實際註冊點擊事件就像上面那樣。