我希望这个线程的标题是有意义的。
请看下面的截图。
上半部分显示了两个已注册培训的用户的数据库。
默认情况下,可容纳 45 个座位
userB注册后,还剩44个。
然后userA注册,现在有43个席位。
到目前为止,一切都很好。
但请看一下该屏幕截图的下半部分。请注意,屏幕显示 43 个可用座位和 44 个可用座位。这让我们的用户非常困惑。我们怎样才能只显示最少的可用数字?换句话说,每次注册后,只显示代表剩余座位的数字。在上面的示例中,它将是 43。
下次另一个用户注册时,数字会减少 1 并变为 42,这就是我们希望根据用户注册该课程的位置和课程日期显示的数字。
下面是我正在使用的代码。
如何调整它以仅显示可用座位数中最小的最新数字?
<asp:SqlDataSource ID="sqlDataSourceloc" runat="server"
ConnectionString="<%$ ConnectionStrings:DBConnectionString %>"
SelectCommand="SELECT locationId, Location FROM tblLocations order by location asc"></asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DBConnectionString %>"
SelectCommand="select DISTINCT l.LocationId,c.courseId, c.coursename, (case when isnull(t.availableSeats,30) = 0 then 'Class is full'
else str(isnull(t.availableSeats,30)) end) availableSeats,d.dateid,d.trainingDates, d.trainingtime, c.CourseDescription,i.instructorName, l.location,l.seating_capacity
from tblLocations l
Inner Join tblCourses c on l.locationId = c.locationId
left join tblTrainings t on l.locationId = t.LocationId and c.courseId = t.courseId
Inner Join tblTrainingDates d on c.dateid=d.dateid
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>