如何在第一个表格中选择用户后从数据库检索数据到第二个表格?
问题描述:
我有我的数据库三个表如下:如何在第一个表格中选择用户后从数据库检索数据到第二个表格?
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>
答
第一。您可以通过System.Data.SqlClient库连接到您的数据库。然后用这些数据填充你的列表视图:example。 ListView来自msdn。 如果您想了解在asp.net程序可以从Wrox的Beginning ASP.NET 4 in C#
支票簿例如 数据绑定看起来像
//YourWebForm1.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
DataSet dataSet = GetYourDataFromDBMethode() // methode gets data from dataset like in msdn spec which I posted above in example;
ListView1.DataSource = dataSet;
ListView.DataBind();
}
然后在SelectedIndexChanged事件你将数据绑定到第二ListView控件。
我不能写更多,这将需要很多时间。
希望它有帮助。
对不起,我的第一个答案是不相关的。当您尝试从数据库中检索数据时会得到什么错误?我假设你想在第二个列表视图中获得课程名称 – 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