2016-12-07 68 views
0

我正在ASP Webforms中构建电子商务网站。我将产品列表显示为从SQL Serer获取数据的listview。我在列表视图的项目模板中有一个文本框,用户可以在其中输入产品的数量。我想动态地将ID设置为Control ID,这样我就可以在后面的代码中检索到数量。如何动态地将ID添加到文本框中并在代码中将其放回到Webforms中

bio.aspx

<ItemTemplate> 
      <td runat="server" style="background-color:#DCDCDC;color: #000000;"> 
       <asp:Image ImageUrl='<%# Eval("Image") %>' ID ="ImageLable" runat="server" CssClass="productImage" /> 
       <br /> 
       <asp:Label ID="Product_NameLabel" runat="server" Text='<%# Eval("[Product Name]") %>' /> 
       <br />Price: 
       <asp:Label ID="PriceLabel" runat="server" Text='<%# Eval("Price") %>' /> 
       <br /> 
       <asp:TextBox ID='TextBox1' runat="server"></asp:TextBox> 
       </br> 
       <asp:Button ID="ButtonClick" runat="server" Text="Add To Cart" CommandArgument='<%# Eval("Id") %>' OnClick="ButtonClick_Click"/> 
      </td> 
</ItemTemplate> 

bio.cs

protected void ButtonClick_Click(object sender, EventArgs e) 
{ 
    Button button = (Button)sender; 
    string buttonId = button.CommandArgument.ToString(); 
    int id = Convert.ToInt32(buttonId); 
    String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["2016_675_z1787626ConnectionString"].ConnectionString; 
    using (SqlConnection conn = new SqlConnection(connectionString)) 
    { 
     String command = "Insert into Cart (ProductId,ProductQty,UserId) Values(@ProductId,@ProductQ,1)"; 
     conn.Open(); 
     SqlCommand cmd = new SqlCommand(command, conn); 
     cmd.Parameters.Add("@ProductId", System.Data.SqlDbType.Int).Value = id; 
     cmd.Parameters.Add("@ProductQ", System.Data.SqlDbType.Int).Value = 1; 
     cmd.ExecuteNonQuery(); 
    } 
    Response.Redirect("cart.aspx"); 
} 

回答

0

你想用按钮控制的命令事件(不要点击事件),使你可以检索CommandArgument

例如,

<asp:Button runat="server" OnCommand="AddToCartButton_Command" 
    CommandArgument='<%# Eval("Id") %>' ID="AddToCartButton" 
    Text="Add To Cart"/> 

protected void AddToCartButton_Command(object sender, CommandEventArgs e) 
{ 
    var id = Convert.ToInt32(e.CommandArgument); 

    // Sibling textbox 
    var parent = (sender as Button).Parent; 
    var textbox = parent.FindControl("TextBox1") as TextBox; 
} 
+0

我想添加一个文本框输入的每个产品列表的数量,所以当我点击addToCart键,标识以及产品质量需要更新到数据库 –

+0

我更新答案。 – Win

+0

但只有第一个产品具有Id“TextBox1”。我有近20个产品通过列表视图显示 –

相关问题