我正在使用Visual Basic 2012和Microsoft SQL Server 2008创建一个网页,允许用户输入多个学生的学生会费。 (即:50个新认捐将产生2014年秋季学期50.00美元的承诺会费)
正在填充的表格如下:
+----------------+--------------+
| Dues_ID | int (pk) |
| Enrollment ID | int |
| Type | varchar(50) |
| Dues_owed | int |
| Description | varchar(MAX) |
+----------------+--------------+
我的pk自动递增。用户通过从下拉列表中选择下降或弹簧来输入enrollment_id,并从下拉列表中选择一年。选择这些选项后,将生成一个复选框列表,列出学生在该学期和年份中注册的内容。存储过程如下:
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)
我正在尝试允许用户选择多个学生并输入相同的到期信息,但是只有所选的第一个正在通过插入存储过程运行:
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)
{
foreach (ListItem c in StdDueNmcklist.Items)
{
if (!c.Selected) continue;
InsertStudDuesdatcon.Insert();
AddDuesbtn.Visible = false;
CnfrmStudDueAddlbl.Visible = true;
CnfrmStudDueAddbtn.Visible = true;
}
}
就像我说的那样,它只会插入所选的第一个复选框列表。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
问题是循环会重新启动并返回第一个复选框。由于此项已经输入,存储过程将关闭。
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;
}
}