Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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
C# 为每个选中的CheckBoxList项执行存储过程时出现问题_C#_Sql_Sql Server_Visual Studio_Stored Procedures - Fatal编程技术网

C# 为每个选中的CheckBoxList项执行存储过程时出现问题

C# 为每个选中的CheckBoxList项执行存储过程时出现问题,c#,sql,sql-server,visual-studio,stored-procedures,C#,Sql,Sql Server,Visual Studio,Stored Procedures,我正在使用Visual Basic 2012和Microsoft SQL Server 2008创建一个网页,允许用户输入多个学生的学费。(即:在2014年秋季学期,50项新认捐将产生50.00美元的认捐费) 正在填充的表如下所示: +----------------+--------------+ | Dues_ID | int (pk) | | Enrollment ID | int | | Type | varchar(50)

我正在使用Visual Basic 2012和Microsoft SQL Server 2008创建一个网页,允许用户输入多个学生的学费。(即:在2014年秋季学期,50项新认捐将产生50.00美元的认捐费)

正在填充的表如下所示:

+----------------+--------------+
| Dues_ID        | int (pk)     |
| Enrollment ID  | int          |
| Type           |  varchar(50) |
| Dues_owed      | int          |
| Description    | varchar(MAX) |
+----------------+--------------+
ALTER PROCEDURE dbo.SelectStudDueIncrCklst
@Term varchar(50),
@Year int


AS

SELECT S.First_name + ' ' + S.Last_name AS Name, E.Enrollment_ID
FROM Student S
INNER JOIN Student_Enrollment E
ON S.Student_ID = E.Student_ID
WHERE 
(E.Term = @Term)
 AND
(E.Year = @Year)
我的pk自动递增。用户通过从下拉列表中选择秋季或春季,以及从下拉列表中选择年份来输入注册id。一旦选择了这些选项,将生成一个复选框列表,列出该学期和该年注册的学生。存储过程如下所示:

+----------------+--------------+
| Dues_ID        | int (pk)     |
| Enrollment ID  | int          |
| Type           |  varchar(50) |
| Dues_owed      | int          |
| Description    | varchar(MAX) |
+----------------+--------------+
ALTER PROCEDURE dbo.SelectStudDueIncrCklst
@Term varchar(50),
@Year int


AS

SELECT S.First_name + ' ' + S.Last_name AS Name, E.Enrollment_ID
FROM Student S
INNER JOIN Student_Enrollment E
ON S.Student_ID = E.Student_ID
WHERE 
(E.Term = @Term)
 AND
(E.Year = @Year)
我试图允许用户选择多个学生并输入相同的到期信息,但是只有第一个选择的学生正在通过Insert存储过程运行:

ALTER PROCEDURE dbo.InsertStudDues
@Enrollment_ID int,
@Type varchar(50),
@Dues_owed int,
@Description varchar(MAX)

AS 
DECLARE
@pkStudDues int
set @pkStudDues = 0

SELECT
@pkStudDues=Dues_ID
FROM 
Student_Dues
WHERE
 (Enrollment_ID = @Enrollment_ID)
AND
 (Type = @Type)


IF @pkStudDues = 0

BEGIN
INSERT INTO dbo.[Student_Dues]
    ([Enrollment_ID]
    ,[Type]
    ,[Dues_owed]
    ,[Description])
VALUES
    (@Enrollment_ID
    ,@Type
    ,@Dues_owed
    ,@Description)

    END
我的代码隐藏(c#):

但是,正如我所说,它只为第一个选中的复选框列表插入内容

任何帮助都将不胜感激


谢谢

问题是循环将重新启动并返回到第一个复选框。由于已输入此项,存储过程将关闭

protected void AddDuesbtn_Click(object sender, EventArgs e)
{

   for (int i = 0; i < StdDueNmcklist.Items.Count; i++)
   {
       if (StdDueNmcklist.Items[i].Selected)
       {


           InsertStudDuesdatcon.Insert();
           AddDuesbtn.Visible = false;
           CnfrmStudDueAddlbl.Visible = true;
           CnfrmStudDueAddbtn.Visible = true;
           StdDueNmcklist.Items[i].Selected = false;

       }


     }
protectedvoid AddDuesbtn\u单击(对象发送方,事件参数e)
{
对于(int i=0;i