根据下面的屏幕截图,我们使用dataList在页面上显示多条记录。
目前的工作方式是用户从下拉列表中选择一个位置,并显示与该位置相关的记录。
记录包括课程,教师,日期,容量座位和每个地点的培训剩余座位。
然后在每一行上都有一个链接,上面写着“注册此培训”
用户点击此链接可注册该位置的该课程。
这会在db上存储正确的记录并显示remainingSeating。
我们假设特定地点的特定课程有45个容量座位。
如果用户注册,则44将显示为要注册的剩余席位。
我目前遇到的问题是,在显示页面上,remainingSeating的值对于所有课程都是相同的。
我们希望每个课程都显示相同的容量,但是根据该课程的注册数量,可以显示不同的剩余课程。
希望我的解释清楚。
以下是我目前正在使用的代码:
<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>
最后,下面是网上商店。
如您所见,一旦更新了一行的remainingSeat,其余行将显示相同的值。那不是我们想要的。
我认为问题出在查询上。
![在此处输入图片说明] [1]
答案 0 :(得分:1)
我认为tblTrainings
包含有关位置和课程的信息,但是适当的加入
left join tblTrainings t on l.locationId = t.LocationId
仅包含locationId。它应该通过修改
left join tblTrainings t on l.locationId = t.LocationId and c.courseId = t.courseId