-2

以下のスクリーンショットでは、dataList を使用してページに複数のレコードを表示しています。

現在の動作方法では、ユーザーがドロップダウン リストから場所を選択すると、その場所に関連付けられたレコードが表示されます。

レコードには、場所ごとのトレーニングのコース、インストラクター、日付、定員と残席数が含まれます。

次に、各行に「このトレーニングに登録する」というリンクがあります。

ユーザーはこのリンクをクリックして、その場所のそのコースに登録します。

これにより、データベースに正しいレコードが保存され、remainingSeating が表示されます。

特定の場所の特定のコースに 45 席の定員があるとします。

ユーザーが登録すると、残りの登録座席数として 44 が表示されます。

私が現在抱えている問題は、表示ページで、残りの座席の値がすべてのコースで同じであることです。

各コースに同じ capacitySeating を表示させたいと考えていますが、そのコースに登録された数に基づいて、異なる leftSeatings を表示したいと考えています。

私の説明が明確であることを願っています。

以下は、私が現在取り組んでいるコードです。

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

最後に、以下がスクリーンショップです。

ご覧のように、1 つの行の leftSeat を更新すると、残りの行は同じ値を示します。それは私たちが望んでいることではありません。

問題はクエリにあると思います。

![ここに画像の説明を入力][1]

4

1 に答える 1

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
于 2013-06-02T19:33:12.967 に答える