2013-06-02 31 views
-1

根據以下屏幕截圖,我們使用dataList在頁面上顯示多條記錄。任何想法如何讓我的查詢正確顯示記錄?

它目前的工作方式是用戶從下拉列表中選擇一個位置,並顯示與該位置關聯的記錄。

記錄包括課程,講師,日期,容量按位置選擇和剩餘選址。

然後在每一行,有一個說:「登記參加此培訓」

用戶點擊此鏈接,該課程爲位置寄存器的鏈接。

這會在db上存儲正確的記錄並顯示剩餘的座標。

讓我們假設有45個容量座位爲特定的位置的特定課程。

如果用戶註冊,則44將顯示爲剩餘的要註冊的座位。

我目前遇到的問題是,在顯示頁面上,remainingSeating的值對於所有課程都是相同的。

我們希望每個課程都顯示相同的capacitySeating但不同的remainingSeatings根據該課程註冊的人數。

希望我的解釋清楚。

下面是我目前使用的代碼:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" 
SelectCommand="select l.LocationId,c.courseId, c.coursename,tm.trainingMode,Isnull(t.availableSeats,30) availableSeats,d.dateid,d.trainingDates, d.trainingtime, c.CourseDescription,i.instructorName, l.location,l.seating_capacity 
       from tblLocations l 
       left join tblTrainings t on l.locationId = t.LocationId 
       Inner Join tblCourses c on l.locationId = c.locationId 
       Inner Join tblTrainingDates d on c.dateid=d.dateid 
       Inner Join tblTrainingMode tm on c.trainingModeId = tm.trainingModeId 
       Inner Join tblCourseInstructor ic on c.courseId = ic.CourseId 
       Inner Join tblInstructors i on ic.instructorId = i.instructorId" 
     FilterExpression="LocationId = '{0}'" > 
<FilterParameters> 
<asp:ControlParameter ControlID="ddlLocation" Name="LocationId" 
    PropertyName="SelectedValue" Type="Int32" /> 
</FilterParameters> 
</asp:SqlDataSource> 

最後,下面是screenshop。如你所見,一旦你爲一行更新remainingSeat,其餘的行顯示相同的值。這不是我們想要的。

我相信問題是與查詢。

![在這裏輸入的形象描述] [1]

回答

1

我想這tblTrainings持有有關位置課程但apropriate加入

left join tblTrainings t on l.locationId = t.LocationId 

只包含locationId。它應該通過修改

left join tblTrainings t on l.locationId = t.LocationId and c.courseId = t.courseId 
+0

這樣做! Thanks @IvanH – Kenny