2014-05-09 5 views
1

안녕하세요 저는 학교 프로젝트를 진행하고 있습니다. SQLDataSource를 통해 채워지는 DropDownList가있는 페이지를 작성합니다. 클래스 중 하나를 선택하면 GridView가 '학생'및 '학년'테이블의 데이터를 표시하도록되어있을 때 'COURSES'라는 데이터베이스의 테이블에있는 클래스의 이름을 표시합니다. 선택을하면 GridView가 전혀 표시되지 않습니다. 문제는 SELECT 명령의 WHERE 절에 있다고 생각합니다. 어떤 도움이라도 대단히 감사하겠습니다! 여기 페이지가로드 될 때 GridView가 표시되지 않습니다.

내 영문 파일입니다

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ClassStudentEdit.aspx.cs" Inherits="ClassStudentEdit" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Students</title> 
    <link type="text/css" rel="stylesheet" href="termproject.css" /> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div id="main"> 
     Course Name:&nbsp;&nbsp;<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="CourseName" DataValueField="CourseID"></asp:DropDownList> 
     <br /> 
     <br /> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PayablesConnectionString %>" SelectCommand="SELECT [CourseName], [CourseID] FROM [COURSES] ORDER BY [CourseName]"></asp:SqlDataSource> 
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" DataKeyNames="CourseID" AllowPaging="True" AllowSorting="True"> 
      <Columns> 
       <asp:CommandField ButtonType="Button" ShowSelectButton="True" /> 
       <asp:BoundField DataField="StudentID" HeaderText="StudentID" SortExpression="StudentID" InsertVisible="False" ReadOnly="True" /> 
       <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> 
       <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> 
       <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" /> 
       <asp:BoundField DataField="Grade" HeaderText="Grade" SortExpression="Grade" /> 
      </Columns> 
     </asp:GridView> 
     <br /> 
     <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:PayablesConnectionString %>" SelectCommand="SELECT COURSES.CourseID, GRADES.Grade, STUDENTS.StudentID, STUDENTS.Title, STUDENTS.FirstName, STUDENTS.LastName FROM COURSES INNER JOIN GRADES ON COURSES.CourseID = GRADES.CourseID INNER JOIN STUDENTS ON GRADES.StudentID = STUDENTS.StudentID WHERE (COURSES.CourseName = @CourseID)"> 
      <SelectParameters> 
       <asp:ControlParameter ControlID="DropDownList1" Name="CourseID" PropertyName="SelectedValue" /> 
      </SelectParameters> 
     </asp:SqlDataSource> 
     <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataKeyNames="StudentID" DataSourceID="SqlDataSource3"> 
      <Fields> 
       <asp:BoundField DataField="StudentID" HeaderText="StudentID" InsertVisible="False" ReadOnly="True" SortExpression="StudentID" /> 
       <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> 
       <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> 
       <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" /> 
       <asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" /> 
       <asp:CommandField ShowEditButton="True" /> 
      </Fields> 
     </asp:DetailsView> 
     <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ ConnectionStrings:PayablesConnectionString %>" DeleteCommand="DELETE FROM [STUDENTS] WHERE [StudentID] = @original_StudentID AND (([Title] = @original_Title) OR ([Title] IS NULL AND @original_Title IS NULL)) AND (([FirstName] = @original_FirstName) OR ([FirstName] IS NULL AND @original_FirstName IS NULL)) AND (([LastName] = @original_LastName) OR ([LastName] IS NULL AND @original_LastName IS NULL)) AND (([Address] = @original_Address) OR ([Address] IS NULL AND @original_Address IS NULL))" InsertCommand="INSERT INTO [STUDENTS] ([Title], [FirstName], [LastName], [Address]) VALUES (@Title, @FirstName, @LastName, @Address)" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [STUDENTS] WHERE ([StudentID] = @StudentID)" UpdateCommand="UPDATE [STUDENTS] SET [Title] = @Title, [FirstName] = @FirstName, [LastName] = @LastName, [Address] = @Address WHERE [StudentID] = @original_StudentID AND (([Title] = @original_Title) OR ([Title] IS NULL AND @original_Title IS NULL)) AND (([FirstName] = @original_FirstName) OR ([FirstName] IS NULL AND @original_FirstName IS NULL)) AND (([LastName] = @original_LastName) OR ([LastName] IS NULL AND @original_LastName IS NULL)) AND (([Address] = @original_Address) OR ([Address] IS NULL AND @original_Address IS NULL))"> 
      <DeleteParameters> 
       <asp:Parameter Name="original_StudentID" Type="Int32" /> 
       <asp:Parameter Name="original_Title" Type="String" /> 
       <asp:Parameter Name="original_FirstName" Type="String" /> 
       <asp:Parameter Name="original_LastName" Type="String" /> 
       <asp:Parameter Name="original_Address" Type="String" /> 
      </DeleteParameters> 
      <InsertParameters> 
       <asp:Parameter Name="Title" Type="String" /> 
       <asp:Parameter Name="FirstName" Type="String" /> 
       <asp:Parameter Name="LastName" Type="String" /> 
       <asp:Parameter Name="Address" Type="String" /> 
      </InsertParameters> 
      <SelectParameters> 
       <asp:ControlParameter ControlID="GridView1" Name="StudentID" PropertyName="SelectedValue" Type="Int32" /> 
      </SelectParameters> 
      <UpdateParameters> 
       <asp:Parameter Name="Title" Type="String" /> 
       <asp:Parameter Name="FirstName" Type="String" /> 
       <asp:Parameter Name="LastName" Type="String" /> 
       <asp:Parameter Name="Address" Type="String" /> 
       <asp:Parameter Name="original_StudentID" Type="Int32" /> 
       <asp:Parameter Name="original_Title" Type="String" /> 
       <asp:Parameter Name="original_FirstName" Type="String" /> 
       <asp:Parameter Name="original_LastName" Type="String" /> 
       <asp:Parameter Name="original_Address" Type="String" /> 
      </UpdateParameters> 
     </asp:SqlDataSource> 
     <br /> 
     <br /> 
    </div> 
    </form> 
</body> 
</html> 

답변

1

이것은 당신의 SQL입니다 :

SELECT Courses.Courseid, 
     Grades.Grade, 
     Students.Studentid, 
     Students.Title, 
     Students.Firstname, 
     Students.Lastname 
FROM Courses 
     INNER JOIN Grades 
       ON Courses.Courseid = Grades.Courseid 
     INNER JOIN Students 
       ON Grades.Studentid = Students.Studentid 
WHERE (Courses.Coursename = @CourseID) 

그것이 Courses.Courseid 대신 Courses.Coursename 아닌가? 그래서 :

WHERE (Courses.Courseid = @CourseID) 

+0

예 그것이 (내가 선언적 데이터 소스 컨트롤을 피할 이유 중 하나)! 아주 많이 고마워! – howdydoody

관련 문제