我有我的數據庫三個表如下:如何在第一個表格中選擇用戶後從數據庫檢索數據到第二個表格?
Employee表:用戶名,姓名,工作,DivisonCode
課程表:CourseID,CourseName,羣ID
Employee_Course表:用戶名,CourseID(每個表中的第一個鍵是主鍵)
我創建了兩個ListViews;一個用於從員工表中檢索員工信息,另一個用於在第一個ListView中顯示選定員工的課程(來自Employee_Course Table)。
對於第一張表格,一切正常,但對於第二張表格,我無法在第一張表格中檢索選定員工的課程。
那麼我該怎麼做呢?
我的ASP.NET代碼:
你不得不從數據庫中獲取數據的<asp:ListView ID="ListView1" runat="server" DataKeyNames="Username"
DataSourceID="SqlDataSource1" InsertItemPosition="LastItem">
<EditItemTemplate>
<tr style="">
<td>
<asp:ImageButton ID="UpdateButton" ImageUrl="images/update4.png" Width="20px" runat="server" CommandName="Update" />
<asp:ImageButton ID="CancelButton" ImageUrl="images/cancel.png" Width="20px" runat="server" CommandName="Cancel" />
</td>
<td>
<asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>' />
</td>
<td>
<asp:Label ID="UsernameLabel1" runat="server" Text='<%# Eval("Username") %>' />
</td>
<td>
<asp:TextBox ID="JobTitleTextBox" runat="server"
Text='<%# Bind("JobTitle") %>' />
</td>
<td>
<asp:TextBox ID="BadgeNoTextBox" runat="server" Text='<%# Bind("BadgeNo") %>' />
</td>
<td>
<asp:TextBox ID="EmpOrgTypeTextBox" runat="server"
Text='<%# Bind("EmpOrgType") %>' />
</td>
<td>
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("DivisionCode") %>'
DataSourceID="SqlDataSource1" DataTextField="DivisionName"
DataValueField="SapCode">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
DeleteCommand="DELETE FROM [Divisions] WHERE [SapCode] = @SapCode"
InsertCommand="INSERT INTO [Divisions] ([SapCode], [DivisionName]) VALUES (@SapCode, @DivisionName)"
SelectCommand="SELECT * FROM [Divisions]"
UpdateCommand="UPDATE [Divisions] SET [DivisionName] = @DivisionName WHERE [SapCode] = @SapCode">
<DeleteParameters>
<asp:Parameter Name="SapCode" Type="Double" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="SapCode" Type="Double" />
<asp:Parameter Name="DivisionName" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="DivisionName" Type="String" />
<asp:Parameter Name="SapCode" Type="Double" />
</UpdateParameters>
</asp:SqlDataSource>
</td>
</tr>
</EditItemTemplate>
<EmptyDataTemplate>
<table runat="server" style="">
<tr>
<td>
No data was returned.</td>
</tr>
</table>
</EmptyDataTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
DeleteCommand="DELETE FROM [employee_courses] WHERE [ID] = @ID"
InsertCommand="INSERT INTO [employee_courses] ([employeeId], [courseId]) VALUES (@employeeId, @courseId)"
SelectCommand="SELECT * FROM [employee_courses] WHERE ([employeeId] = @Username)"
UpdateCommand="UPDATE [employee_courses] SET [employeeId] = @employeeId, [courseId] = @courseId WHERE [ID] = @ID">
<DeleteParameters>
<asp:Parameter Name="ID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="employeeId" Type="String" />
<asp:Parameter Name="courseId" Type="Int32" />
<asp:ControlParameter ControlID="ListView1" Name="Username" PropertyName="SelectedValue" Type="String" />
</InsertParameters>
<SelectParameters>
<asp:ControlParameter ControlID="ListView1" Name="Username"
PropertyName="SelectedValue" Type="String" />
</SelectParameters>
<UpdateParameters>
<%--<asp:Parameter Name="employeeId" Type="String" />--%>
<asp:Parameter Name="courseId" Type="Int32" />
<asp:Parameter Name="ID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
對不起,我的第一個答案是不相關的。當您嘗試從數據庫中檢索數據時會得到什麼錯誤?我假設你想在第二個列表視圖中獲得課程名稱 – Mariusz 2011-12-21 12:05:10
是的,這是我想要得到的。我沒有得到任何錯誤。一切工作正常,但是當我在第一個ListView中選擇員工時,課程名稱將不會顯示在第二個ListView中 – user1093651 2011-12-21 12:07:13
然後答案是複雜的給你提供解決方案。你應該在代碼中做所有事情,而不是在aspx中。首先將數據源提供給代碼背後的listview,然後在事件上,您可以將第二個數據綁定到第二個listview(也在代碼隱藏中)取決於您選擇了哪個員工ID。 – Mariusz 2011-12-21 12:17:14