Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 使用Gridview插入数据时,只输入第一行,忽略后续行_Stored Procedures_C# - Fatal编程技术网

Stored procedures 使用Gridview插入数据时,只输入第一行,忽略后续行

Stored procedures 使用Gridview插入数据时,只输入第一行,忽略后续行,stored-procedures,c#,Stored Procedures,C#,我的asp.net站点中有一个Gridview,它收集用户条目,然后提交这些条目以插入到我的SQL表中。目前,该过程可以工作,但它只会插入第一个Gridview行中的数据,后续行似乎会被忽略。非常感谢您的帮助!!:) 这是我的C#代码开始我的按钮单击: foreach (GridViewRow g1 in GridView1.Rows) { SqlCommand cmd = new SqlCommand();

我的asp.net站点中有一个Gridview,它收集用户条目,然后提交这些条目以插入到我的SQL表中。目前,该过程可以工作,但它只会插入第一个Gridview行中的数据,后续行似乎会被忽略。非常感谢您的帮助!!:)

这是我的C#代码开始我的按钮单击:

foreach (GridViewRow g1 in GridView1.Rows)
            {
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                cmd.CommandText = "spCreateOrder";
                cmd.CommandType = CommandType.StoredProcedure;                    
                cmd.Parameters.AddWithValue("@customer_id", TextBox1.Text);
                cmd.Parameters.AddWithValue("@track_num", TextBox2.Text);
                cmd.Parameters.AddWithValue("@pckg_num", TextBox3.Text);
                cmd.Parameters.AddWithValue("@manuf_name", g1.Cells[0].Text);
                cmd.Parameters.AddWithValue("@model_name", g1.Cells[1].Text);
                cmd.Parameters.AddWithValue("@qty", g1.Cells[2].Text);
                cmd.Parameters.AddWithValue("@notes", g1.Cells[3].Text);

                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
这是我的存储过程“spCreateOrder”:

我将在您的存储过程上创建一个表,用代码填充它,然后发送整个表并合并它。他妈的比一行一行的高效多了,而且也很容易理解


至于您的错误,您是否使用探查器测试了SQL实际发送到服务器的内容

自从我进入.NET世界以来,这一分钟一直很热,但是重定向是否会停止页面执行(和循环)?我尝试在没有重定向的情况下运行它,得到了相同的结果,所以我认为这不是问题所在。谢谢<代码>MessageBox.Show()在ASP.NET中?它是一个
System.Windows.Form
函数。我认为,
Response.Redirect()
的位置不正确。您是否检查了SP是否正常工作?我原以为正常,但经过进一步测试后,它似乎工作不正常。我真的很难做到这一点,我几乎想知道我是否选择了最困难的方法来做一些相当简单的事情。不熟悉asp.net和SQL,所以随学随用。。我想我可能需要发布另一个问题,并获得一些关于如何继续的想法。我的计划似乎行不通顺便说一句,这里缺少
@
cmd.Parameters.AddWithValue(“客户id”,TextBox1.Text)
    ALTER PROCEDURE [dbo].[spCreateOrder]

@customer_id INT,
@track_num NVARCHAR(50),
@pckg_num NUMERIC,
@manuf_name NVARCHAR(50),
@model_name NVARCHAR(50),
@qty NUMERIC,
@notes NVARCHAR(MAX)

AS
BEGIN

    IF NOT EXISTS (SELECT * FROM Orders WHERE customer_id=@customer_id AND track_num=@track_num)
    BEGIN

        DECLARE @NewOrder TABLE (order_id INT);

        INSERT INTO Orders
            (customer_id, track_num, pckg_num)
        OUTPUT
            inserted.order_id INTO @NewOrder
        VALUES
            (@customer_id, @track_num, @pckg_num);

        INSERT INTO Items
            (manuf, model, qty, notes, order_id)
        SELECT
            @manuf_name, @model_name, @qty, @notes, order_id
        FROM @NewOrder;

    END
    ELSE

        INSERT INTO Items
            (manuf, model, qty, notes, order_id)
        SELECT
            @manuf_name, @model_name, @qty, @notes, order_id
        FROM @NewOrder;

END