簡體   English   中英

在第一個表中選擇用戶后,如何從數據庫檢索數據到第二個表?

[英]How to retrieve data from the database to the second table after selecting the user in the first table?

我的數據庫中有三個表,如下所示:

員工表:用戶名,名稱,職位,Division碼

課程表:CourseID,CoursName,GroupID

Employee_Course表:用戶名,CourseID(每個表中的第一個鍵是主鍵)

我創建了兩個ListViews。 一個用於從Employee表中檢索雇員信息,第二個用於在第一個ListView中顯示所選雇員的已修課程(從Employee_Course表中)。

對於第一個表,一切工作正常並且很好,但是對於第二個表,我無法在第一個表中檢索所選員工的已修課程。

那我該怎么辦呢?

我的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庫連接到數據庫。 然后用這些數據填充您的listview: example 來自msdn的ListView 如果您想學習asp.net中的編程,則可以從wrox查看本書, 以C#開頭ASP.NET 4。

例如數據綁定看起來像

//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。

我不能再寫太多了,這需要很多時間。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM