2016-07-01 2 views
1

Вот сделка, я делаю сайт, который продает некоторые продукты, и в зависимости от того, сколько продуктов, у меня тоже есть количество кнопок.ASP.NET нажмите кнопку не работает в коде позади

Например, если у меня есть 5 продуктов, у меня есть 5 кнопок, что-то вроде этого:

Picture

Так я написал код, который выглядит следующим образом:

  SqlHey SQLViewProducts = new SqlHey(); 
      DataSet DSViewProducts = new DataSet(); 
      string Sheilta = "SELECT TblShop.ItemName, TblShop.Price, TblShop.ShopType, TblShop.Image, TblShop.Description FROM TblShop;"; 
      DSViewProducts = SQLViewProducts.chkData(Sheilta); 
      int I; 
      for (I = 0; I < DSViewProducts.Tables[0].Rows.Count; I++) 
      { 
       if (DSViewProducts.Tables[0].Rows.Count % 2 == 0) 
       { 
        if (I % 2 == 0) 
         CatalogProducts.InnerHtml += " <div class=\"row\"> <div style=\"position: relative\" class=\"col-lg-3 col-md-4 col-sm-6 col-xs-12 col-sm-push-1 animated bounceInLeft\"> <div class=\"hovereffect\"> <img class=\"img-responsive\" src= \".." + DSViewProducts.Tables[0].Rows[I][3].ToString() + "\"" + " alt=\"\"> <div class=\"overlay\"> <h2>Add to cart<span style=\"font-size: 0.65em\"></span> <asp:Button ID=\"Button1\" runat=\"server\" BackColor=\"Transparent\" BorderStyle=\"None\" ForeColor=\"Transparent\" Height=\"43px\" Style=Height=\"z-index: 99; left: 0px; position: absolute; top: 0px\" Text=\"a\" Width=\"87px\" /></h2> <p class=\"icon-links\">" + DSViewProducts.Tables[0].Rows[I][0].ToString() + "<br /> " + DSViewProducts.Tables[0].Rows[I][4].ToString() + " </p> </div> </div> </div>"; 
        else CatalogProducts.InnerHtml += " <div style=\"position: relative\" class=\"col-lg-3 col-md-4 col-sm-6 col-xs-12 col-sm-push-1 animated bounceInLeft\"> <div class=\"hovereffect\"> <img class=\"img-responsive\" src= \".." + DSViewProducts.Tables[0].Rows[I][3].ToString() + "\"" + " alt=\"\"> <div class=\"overlay\"> <h2>Add to cart<span style=\"font-size: 0.65em\"></span> <asp:Button ID=\"Button1\" runat=\"server\" BackColor=\"Transparent\" BorderStyle=\"None\" ForeColor=\"Transparent\" Height=\"43px\" Style=\"z-index: 99; left: 0px; position: absolute; top: 0px\" Text=\"a\" Width=\"87px\" /></h2> <p class=\"icon-links\">" + DSViewProducts.Tables[0].Rows[I][0].ToString() + "<br /> " + DSViewProducts.Tables[0].Rows[I][4].ToString() + " </p> </div> </div> </div> </div> <br /> <br />"; 
       } 

       if (DSViewProducts.Tables[0].Rows.Count % 2 != 0) 
       { 
        if (I + 1 == DSViewProducts.Tables[0].Rows.Count) 
         CatalogProducts.InnerHtml += " <div class=\"row\"> <div style=\"position: relative\" class=\"col-lg-3 col-md-4 col-sm-6 col-xs-12 col-sm-push-1 animated bounceInLeft\"> <div class=\"hovereffect\"> <img class=\"img-responsive\" src= \".." + DSViewProducts.Tables[0].Rows[I][3].ToString() + "\"" + " alt=\"\"> <div class=\"overlay\"> <h2>Add to cart<span style=\"font-size: 0.65em\"></span> <asp:Button ID=\"Button1\" runat=\"server\" BackColor=\"Transparent\" BorderStyle=\"None\" ForeColor=\"Transparent\" Height=\"43px\" Style=Height=\"z-index: 99; left: 0px; position: absolute; top: 0px\" Text=\"a\" Width=\"87px\" /></h2> <p class=\"icon-links\">" + DSViewProducts.Tables[0].Rows[I][0].ToString() + "<br /> " + DSViewProducts.Tables[0].Rows[I][4].ToString() + " </p> </div> </div> </div> </div> "; 
        if (I % 2 == 0) 
         CatalogProducts.InnerHtml += " <div class=\"row\"> <div style=\"position: relative\" class=\"col-lg-3 col-md-4 col-sm-6 col-xs-12 col-sm-push-1 animated bounceInLeft\"> <div class=\"hovereffect\"> <img class=\"img-responsive\" src= \".." + DSViewProducts.Tables[0].Rows[I][3].ToString() + "\"" + " alt=\"\"> <div class=\"overlay\"> <h2>Add to cart<span style=\"font-size: 0.65em\"></span> <asp:Button ID=\"Button1\" runat=\"server\" BackColor=\"Transparent\" BorderStyle=\"None\" ForeColor=\"Transparent\" Height=\"43px\" Style=Height=\"z-index: 99; left: 0px; position: absolute; top: 0px\" Text=\"a\" Width=\"87px\" /></h2> <p class=\"icon-links\">" + DSViewProducts.Tables[0].Rows[I][0].ToString() + "<br /> " + DSViewProducts.Tables[0].Rows[I][4].ToString() + " </p> </div> </div> </div> </div> <br /> <br /> <br /> <br />"; 
        else CatalogProducts.InnerHtml += " <div style=\"position: relative\" class=\"col-lg-3 col-md-4 col-sm-6 col-xs-12 col-sm-push-1 animated bounceInLeft\"> <div class=\"hovereffect\"> <img class=\"img-responsive\" src= \".." + DSViewProducts.Tables[0].Rows[I][3].ToString() + "\"" + " alt=\"\"> <div class=\"overlay\"> <h2>Add to cart<span style=\"font-size: 0.65em\"></span> <asp:Button ID=\"Button1\" runat=\"server\" BackColor=\"Transparent\" BorderStyle=\"None\" ForeColor=\"Transparent\" Height=\"43px\" Style=Height=\"z-index: 99; left: 0px; position: absolute; top: 0px\" Text=\"a\" Width=\"87px\" /></h2> <p class=\"icon-links\">" + DSViewProducts.Tables[0].Rows[I][0].ToString() + "<br /> " + DSViewProducts.Tables[0].Rows[I][4].ToString() + " </p> </div> </div> </div> </div> <br /> <br />"; 
       } 
      } 


      protected void Allbuttons_Click(object sender, EventArgs e) 
      { 
       string BTNID = ((Button)sender).ID.ToString(); 
       Session["ItemName"] = BTNID; 
       Response.Redirect("ViewItem.aspx"); 
      } 

Но кнопка Безразлично Не работайте, когда я нажимаю на него. Я написал тот же код (div one) на HTML, чтобы увидеть, может быть, я сделал что-то неправильно, и кнопки работают!

Вот как это выглядит, когда я написал его на HTML (Это работает):

<div class="row"> 

    <div style="position: relative" class="col-lg-3 col-md-4 col-sm-6 col-xs-12 col-sm-push-1 animated bounceInLeft"> 
    <div class="hovereffect"> 
     <img class="img-responsive" src="../User/Pictures/ShirtCheck.png" alt=""> 
      <div class="overlay"> 
       <h2>Add to cart<span style="font-size: 0.65em"></span> 
        <asp:Button ID="Button1" runat="server" BackColor="Transparent" BorderStyle="None" 
         ForeColor="Transparent" Height="43px" Style="z-index: 99; left: 0px; position: absolute; 
         top: 0px" Text="a" Width="87px" /> 
       <p class="icon-links"></p> 
      </div> 

    </div> 
</div> 

Почему, когда я пишу это вручную кнопка делает работу, и когда я делаю это с помощью кода позади они надевают «т?

+0

** Беспроволочный совет: ** Рассмотрите использование классов CSS, а не встроенных стилей, и используйте CSS для добавления пространства между элементами, а не разрывов строк. Вы можете также изучить использование 'StringBuilder', а не конкатенировать строки в цикле. –

ответ

0

Это очень простой пример, но он может применяться к тому, что вы делаете в своем приложении. Хорошо, так что у вас есть источник данных, как это:

protected List<string> ListOfStrings { get; set; } 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (ListOfStrings == null) 
       ListOfStrings = new List<string>(); 

      ListOfStrings.Insert(0, "First item"); 
      ListOfStrings.Insert(1, "Second item"); 
      ListOfStrings.Insert(2, "Third item"); 
      ListOfStrings.Insert(3, "Fourth item"); 
     } 

Этот источник данных являются ваши продукты ... Я видел, что вы генерируете HTML для страницы ASPX в коде позади, который, как правило, считается плохим практика теперь, так как вы хотите, чтобы ваш код HTML и C# был полностью разделен (это и есть цель этого ответа). Что вы можете сделать, чтобы отделить HTML и C# является использование выражения привязки на странице ASPX, как следующее:

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 
    <% for (int i = 0; i < ListOfStrings.Count(); i++) 
     { 

    %> 
     <p><%=ListOfStrings[i] %></p> 
    <% } %> 

</asp:Content> 

Таким образом, вы полностью отделить HTML от C# код сам, и это намного проще для вас для обработки HTML позже, если вам нужно внести изменения в сам HTML, вместо того, чтобы модифицировать код C# (который, я думаю, является болью в заднице) ... Поэтому всегда старайтесь отделить свой код от HTML, то есть хорошая практика. Надеюсь, это поможет вам. :)