2014-05-14 51 views
0

我已經讓這個網頁是一個老師可以將標記上傳給每個學生。在那之後,老師應該能夠看到每個學生都有其尊重標記的桌子。我的問題是,我不能把每個標記都組織到它的尊重學生身上。它向我展示了每個學生和所有重複過的學生上傳的分數。如何顯示每個用戶的數據?

這裏是顯示標記的網頁:

@{ 
Layout = "~/_SiteLayout.cshtml"; 

var galleryId = UrlData[0].AsInt(); 
    var db = Database.Open("PhotoGallery"); 
    var subject = db.QuerySingle("SELECT Course FROM Subjects WHERE Sub_Id = @0", galleryId); 
    var people = db.Query("SELECT * FROM UserProfiles WHERE Course = @0", subject.Course); 
    var notas = "SELECT * FROM Notas INNER JOIN UserProfiles ON Notas.UserId = UserProfiles.UserId WHERE Notas.Sub_Id = @0"; 
} 

<!DOCTYPE html> 

<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title></title> 
</head> 
<body> 

    <div class="aa_2 check"> 
    <div class="aa_3 check"> 

     <table class="check table_not"> 
      <tr class=" arrow2"> 
       <th>STUDENTS</th> 
       <th>STUDENT´s MARK</th> 
      </tr> 

      @foreach(var users in people){ 
       <tr class="arrow"> 

        <td>@users.Nombre @users.Apellido</td> 
        <td> 
        @foreach (var nott in db.Query(notas, galleryId)){ 
         @nott.Nota 
        } 
        </td> 
       </tr> 
      } 

     </table> 


     </ul> 
     </div> 
     </div> 

</body> 
</html> 

有什麼建議?

回答

0

你的嵌套的foreach循環:

@foreach (var nott in db.Query(notas, galleryId)){ 
    @nott.Nota 
    } 

看起來像它貫穿於每一個數據庫標記和其打印到學生的TD。您需要使用where/if類型的語句才能使其僅爲該學生打印標記。順便說一下,你的變量名稱由於某種原因而難以理解。

+0

我知道。你說我必須使用where或if類型的語句......是否與變量「notas」中使用的WHERE一樣? – user3622058

0

安德魯是正確的。你的notas sql不正確。嘗試以下操作。

首先改變:

var notas = "SELECT * FROM Notas INNER JOIN UserProfiles ON Notas.UserId = UserProfiles.UserId WHERE Notas.Sub_Id = @0"; 

到:

var notas = "SELECT * FROM Notas WHERE Notas.UserId = @1 AND Notas.Sub_Id = @0" 

其次改變:

foreach (var nott in db.Query(notas, galleryId)){ 

到:

foreach (var nott in db.Query(notas, galleryId, users.UserId)){ 

我現在遠離我的開發機器,因此您可能必須在最後的foreach語句中的users.UserId前加上&符號(@)。

相關問題