2016-07-01 16 views
1

ここでは、いくつかの製品を販売するWebサイトを作っています。私は5つの製品を持っている場合ASP.NETのボタンがコードの背後にあるコードで動作しない

は、例えば、私は5つのボタン、このようなものがあります:

  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"); 
      } 

しかし、ボタンのdoesn:

Picture

をだから私はこのようなコードを書きましたそれをクリックするとうまくいきません。多分私はHTMLに同じコード(div 1)を書きました。私は何か間違っていて、ボタンは機能します!

これは私が(それが働いている)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> 

私は手動でそれを書くとき、ボタンを仕事とするとき、私は彼らドンの背後にあるコードでそれを行うのない理由't?

+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"); 
     } 

このデータソースは、あなたの製品です...私はあなたが一般的に悪いと考えられており、背後にあるコードでASPXページのためのあなたのHTMLを生成していることがわかりましたあなたのHTMLとC#コードを完全に分離して実装したいので、今すぐ実行してください(これはこの回答の目的です)。

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

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

</asp:Content> 

あなたは完全にC#コード自体からHTMLを分離している、それはあなたのためにはるかに簡単である。この方法は:あなたは、あなたのHTMLやC#は、以下のようなあなたのASPXページ内のバインディング式を使用することで分離するために何ができます後でHTMLを扱うためには、C#コード(私が思うには痛みだと思う)を変更するのではなく、HTML自体を変更する必要がある場合は、HTMLからコードを分離しようとします。いい練習。これがあなたを助けてくれることを願っています:

関連する問題