向数据库中插入多个动态文本框数据

本文关键字:动态 文本 数据 数据库 插入 | 更新日期: 2023-09-27 18:04:44

我的目标是…点击一个按钮,它会创建一些文本框。用户类型的信息,如果有更多的信息(在这种情况下,不同的房子,他们可能感兴趣)放入。他们不断点击添加按钮,更多的框出现了。当他们完成后,他们点击插入,所有的数据插入。

现在我所拥有的是一个用户可以点击它一次并插入数据,它可以工作。我遇到的麻烦是有一种方法来保持ID计数的方式,我不需要输入"txtDynamic1","txtdynamic2"等。

另外,@name参数只能使用一次。所以我不明白,如果这样做的唯一方法是点击插入,然后它从文本框中擦除数据,他们可以重新键入更多。

我不确定我的设想是否可能,他们可以点击多少添加文本框,然后用一个按钮点击插入它。我有一个gridview用于这个设置,但它一次只做一个。任何帮助都将是非常感激的,因为我已经在这上面花了太多时间了。

很抱歉,如果这没有解释清楚,因为我的大脑在这一点上是油炸的。

public partial class Sold : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
    List<string> keys = Request.Form.AllKeys.Where(key => key.Contains("txtDynamic")).ToList();
    int i = 1;
    foreach (string key in keys)
    {
        this.CreateTextBox("txtDynamic" + i);
        i++;
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    int j = 1;
    for (j = 1; j < 3; j++)
    {
        int index = pnl.Controls.OfType<TextBox>().ToList().Count + 1;
        this.CreateTextBox("txtDynamic" + index);
    }
}
private void CreateTextBox(string id)
{
    TextBox txt = new TextBox();
    txt.ID = id;
    pnl.Controls.Add(txt);
    // Literal lt = new Literal();
    //  lt.Text = "<br />";
    //  pnl.Controls.Add(lt);       
}
protected void Button2_Click(object sender, EventArgs e)
{
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("INSERT INTO TI_Homes(CustomerID, Year, Make, Size, Owed, Offer, Wholesale) VALUES('1000', @name, @year, '80ft', '100,000', '80,000', 'Wholesale?')"))
            {
                cmd.Connection = con;
                cmd.Parameters.AddWithValue("@name", (pnl.FindControl("txtDynamic1") as TextBox).Text);
                cmd.Parameters.AddWithValue("@year", (pnl.FindControl("txtDynamic2") as TextBox).Text);
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
        }
    }
}

向数据库中插入多个动态文本框数据

虽然我不建议尝试在服务器端这样做,你需要做的是保持他们的状态回发意味着你将不得不存储他们在会话或视图状态(boo)恢复他们的回发,然后循环在你的按钮点击表单控件。然后,您可以在循环中逐行访问@name参数(只需要一次)。下面是我的想法,但我已经很多年没有使用过web表单了,所以你需要检查一下语法。

protected void Button2_Click(object sender, EventArgs e)
{
     foreach(var control in Page.Controls)
   {
      if(control is TextBox)
      {
        if(((TextBox)control).ID.IndexOf("txtDynamic") != -1)
        {
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("INSERT INTO TI_Homes(CustomerID, Year, Make, Size, Owed, Offer, Wholesale) VALUES('1000', @name, @year, '80ft', '100,000', '80,000', 'Wholesale?')"))
            {
                cmd.Connection = con;
                cmd.Parameters.AddWithValue("@name", ((TextBox)control).Text);
                cmd.Parameters.AddWithValue("@year", (pnl.FindControl("txtDynamic2") as TextBox).Text);
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
          }
        }
      }
     }
   }
}