2017-01-29 3 views
0

私はASP.NETで小さな学校プロジェクトをやっていますが、データベースからすべての製品を取得して表示し、それらのすべてに「カードに追加」ボタンを表示しようとしています。私はボタンを追加する以外はすべてこれを行うことができました。私はすべての製品を取得する機能を持っており、ASP Repeaterでバインドしています。問題は、ボタンを追加しようとすると、最初にフォームタグを使用する必要があると言います。フォームタグを追加するとrunat = "server"が必要ですが、追加すると私は複数のrunat = "server"を持つことはできません。 Repeaterタグもそれを使用していて、私は立ち往生しています。誰かが何かを提案できますか?ありがとうございました!各製品内のボタン

private void bindPopularProducts() 
{ 
    String CS = ConfigurationManager.ConnectionStrings["DatabaseConnectionString1"].ConnectionString; 

    using (SqlConnection con = new SqlConnection(CS)) 
    { 
     using (SqlCommand cmd = new SqlCommand("SELECT * FROM Food", con)) 
     { 
      using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) 
      { 
       DataTable fFood = new DataTable(); 
       sda.Fill(fFood); 
       popularFood.DataSource = fFood; 
       popularFood.DataBind(); 
      } 
     } 
    } 
} 

この

<asp:Repeater ID="popularFood" runat="server"> 
      <ItemTemplate> 
       <div class="col-md-4"> 
        <div><%# Eval("name") %></div> 
        <div><asp:Image ID="foodImage" runat="server" ImageUrl='<%# "~/images/food/" + Eval("image").ToString() %>' Visible="true" CssClass="img-responsive" /></div> 
        <div> 
         <div class="col-md-4 text-left"><%# "$"+Eval("price_small")+"/small" %></div> 



         <div class="col-md-8 text-right"> 


         </div> 
        </div> 
       </div> 
      </ItemTemplate> 
     </asp:Repeater> 

私は、あなたのRepeaterのItemTemplate内のテキスト、右のdiv

+0

あなたのコードを表示するかもしれません:) – Creator

+0

ええ、申し訳ありません、私は私の投稿を編集しました。 –

答えて

0

内のボタンを配置し、ボタンを追加しようとしています。ボタンで、CommandArgumentに製品を一意に識別するキー値を設定します。あなたのコードで

<asp:Button ID="Button1" runat="server" Text="Click Me" CommandArgument='<%# Eval("Product.Key") %>' OnClick="Button1_Click" /> 

、イベントハンドラは、プロダクトキーを取得し、あなたの「カードに追加」メソッドを実行するために、ボタンのCommandArgumentを使用することができます。

protected void Button1_Click(object sender, EventArgs e) 
    { 
     string myProductKey; 

     // Use "myProductKey" to do something with the Product record... 
     myProductKey = ((Button)sender).CommandArgument; 
    } 
+0

追加するとこのエラーが発生します。 "無効なポストバックまたはコールバック引数イベントの検証は、ページまたは<%@ Page EnableEventValidation =" true "%>のを使用して有効にします。またはコールバックイベントは、元々レンダリングされたサーバーコントロールから発生します。データが有効であり、予期される場合は、検証のためにポストバックまたはコールバックデータを登録するためにClientScriptManager.RegisterForEventValidationメソッドを使用してください。 –