2011-12-21 128 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控件。

我不能寫更多,這將需要很多時間。

希望它有幫助。

相關問題