C# 为每个选中的CheckBoxList项执行存储过程时出现问题
我正在使用Visual Basic 2012和Microsoft SQL Server 2008创建一个网页,允许用户输入多个学生的学费。(即:在2014年秋季学期,50项新认捐将产生50.00美元的认捐费) 正在填充的表如下所示: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)
+----------------+--------------+
| 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