2011-12-21 96 views
0

我有我的数据库三个表如下:如何在第一个表格中选择用户后从数据库检索数据到第二个表格?

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

对不起,我的第一个答案是不相关的。当您尝试从数据库中检索数据时会得到什么错误?我假设你想在第二个列表视图中获得课程名称 – Mariusz 2011-12-21 12:05:10

+0

是的,这是我想要得到的。我没有得到任何错误。一切工作正常,但是当我在第一个ListView中选择员工时,课程名称将不会显示在第二个ListView中 – user1093651 2011-12-21 12:07:13

+0

然后答案是复杂的给你提供解决方案。你应该在代码中做所有事情,而不是在aspx中。首先将数据源提供给代码背后的listview,然后在事件上,您可以将第二个数据绑定到第二个listview(也在代码隐藏中)取决于您选择了哪个员工ID。 – Mariusz 2011-12-21 12:17:14

回答

0

第一。您可以通过System.Data.SqlClient库连接到您的数据库。然后用这些数据填充你的列表视图:exampleListView来自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控件。

我不能写更多,这将需要很多时间。

希望它有帮助。

相关问题