2014-03-04 42 views
0

我正在使用Visual Basic 2012和Microsoft SQL Server 2008創建一個網頁,該網頁將允許用戶輸入由多個學生招致的學費。 (即:50項新的服務承諾承擔$ 50.00質押會費秋季學期2014)檢查每個CheckBoxList項執行存儲過程的問題

正在填充表如下:

+----------------+--------------+ 
| 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

問題是循環會重新啓動並返回到第一個複選框。由於此項目已輸入,存儲過程將關閉。

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; 

     } 


    }