0

我正在使用 Visual Studio 和 c# 创建一个员工名单系统,其中“员工”表中的员工姓名显示在数据列表中。除此之外,我还在 asp 中创建了 2 个下拉列表,与“员工”表分开,尽管它们出现在项目模板标签中以使它们能够在员工姓名旁边动态创建。然后,用户可以从下拉列表中选择员工的轮班开始和结束时间。

我决定使用数据列表和动态下拉列表,因为员工表会经常更新,因为新员工可能会开始或离开,因此未来的轮班表可能包含不同数量的员工。

    <table class="style57" width="100%">
        <tr>
            <td class="style70" width="100%">
                        <asp:DataList ID="DataList1" runat="server" DataSourceID="StaffHours" 
                            ShowFooter="False" Width="668px" Height="16px" CellPadding="1" CellSpacing="1"">
                            <ItemTemplate>
                            <table width="100%">
                            <tr>
                            <td class="style76" width="0%">
                            <asp:Label ID="lblStaffID" runat="server" bgcolor="#CCCCCC" Visible=false Text='<%# Eval("StaffID") %>'/>
                            </td>
                            <td class="style73" width="20%">
                                <asp:Label ID="lblFirstName" runat="server" bgcolor="#CCCCCC" Text='<%# Eval("FirstName") %>'/>
                                &nbsp;<asp:Label ID="lblLastName" runat="server" bgcolor="#CCCCCC" Text='<%# Eval("LastName") %>' />
                            </td>
                            <td width="10%"> 
                                <asp:DropDownList ID="ddStartShift" runat="Server">
                                <asp:ListItem  Value="Start Time" Selected="True"></asp:ListItem>
                                <asp:ListItem  Value="06:00"></asp:ListItem>
                                <asp:ListItem  Value="07:00"></asp:ListItem>
                                <asp:ListItem  Value="08:00"></asp:ListItem>
                                <asp:ListItem  Value="09:00"></asp:ListItem>
                                <asp:ListItem  Value="10:00"></asp:ListItem>
                                <asp:ListItem  Value="11:00"></asp:ListItem>
                                <asp:ListItem  Value="12:00"></asp:ListItem>
                                <asp:ListItem  Value="13:00"></asp:ListItem>
                                <asp:ListItem  Value="14:00"></asp:ListItem>
                                <asp:ListItem  Value="15:00"></asp:ListItem>
                                <asp:ListItem  Value="16:00"></asp:ListItem>
                                <asp:ListItem  Value="17:00"></asp:ListItem>
                                <asp:ListItem  Value="18:00"></asp:ListItem>
                                <asp:ListItem  Value="19:00"></asp:ListItem>
                                <asp:ListItem  Value="20:00"></asp:ListItem>
                                <asp:ListItem  Value="21:00"></asp:ListItem>
                                <asp:ListItem  Value="22:00"></asp:ListItem>
                                <asp:ListItem  Value="23:00"></asp:ListItem>
                                <asp:ListItem  Value="00:00"></asp:ListItem>
                                <asp:ListItem  Value="01:00"></asp:ListItem>
                                <asp:ListItem  Value="02:00"></asp:ListItem>
                                <asp:ListItem  Value="03:00"></asp:ListItem>
                                <asp:ListItem  Value="04:00"></asp:ListItem>
                                <asp:ListItem  Value="05:00"></asp:ListItem>
                                </asp:DropDownList>
                                </td>
                                <td width="10%"> 
                                <asp:DropDownList ID="ddEndShift" runat="Server">
                                <asp:ListItem  Value="End Time" Selected="True"></asp:ListItem>
                                <asp:ListItem  Value="06:00"></asp:ListItem>
                                <asp:ListItem  Value="07:00"></asp:ListItem>
                                <asp:ListItem  Value="08:00"></asp:ListItem>
                                <asp:ListItem  Value="09:00"></asp:ListItem>
                                <asp:ListItem  Value="10:00"></asp:ListItem>
                                <asp:ListItem  Value="11:00"></asp:ListItem>
                                <asp:ListItem  Value="12:00"></asp:ListItem>
                                <asp:ListItem  Value="13:00"></asp:ListItem>
                                <asp:ListItem  Value="14:00"></asp:ListItem>
                                <asp:ListItem  Value="15:00"></asp:ListItem>
                                <asp:ListItem  Value="16:00"></asp:ListItem>
                                <asp:ListItem  Value="17:00"></asp:ListItem>
                                <asp:ListItem  Value="18:00"></asp:ListItem>
                                <asp:ListItem  Value="19:00"></asp:ListItem>
                                <asp:ListItem  Value="20:00"></asp:ListItem>
                                <asp:ListItem  Value="21:00"></asp:ListItem>
                                <asp:ListItem  Value="22:00"></asp:ListItem>
                                <asp:ListItem  Value="23:00"></asp:ListItem>
                                <asp:ListItem  Value="00:00"></asp:ListItem>
                                <asp:ListItem  Value="01:00"></asp:ListItem>
                                <asp:ListItem  Value="02:00"></asp:ListItem>
                                <asp:ListItem  Value="03:00"></asp:ListItem>
                                <asp:ListItem  Value="04:00"></asp:ListItem>
                                <asp:ListItem  Value="05:00"></asp:ListItem>
                                </asp:DropDownList>
                                </td>
                            </tr>
                         </table>
                         </ItemTemplate>
                        </asp:DataList>
                        <asp:SqlDataSource ID="StaffHours" runat="server" 
                            ConnectionString="<%$ ConnectionStrings:myConnectionString %>" 
                            SelectCommand="SELECT [StaffID], [FirstName], [LastName] FROM [Staff]">
                        </asp:SqlDataSource>
                    </td>
        </tr>
</table>

由于这些下拉列表是在数据列表中动态创建的,因此我无法弄清楚如何将每个员工的值插入到“Rota”表中,因为它们没有被识别,因此我无法将它们输入到存储过程的参数中。

4

1 回答 1

0

将 的DataKeyField设置DataListStaffID

<asp:DataList ID="DataList1" runat="server" DataSourceID="StaffHours" 
DataKeyField = "StaffID" ShowFooter="False" Width="668px" 
Height="16px" CellPadding="1" CellSpacing="1"">

这将允许您在回发处理数据时检索 StaffID:

for(int index = 0;index < DataList1.Items.Count;index++)
{
    int staffID = (int) DataList1.DataKeys[index];
    DropDownList ddStartShift = (DropDownList) DataList1.Items[index].FindControl("ddStartShift");
    // etc.

}

有关 DataKeys 属性的更多信息: BaseDataList DataKeys 属性

于 2013-03-21T20:00:53.343 回答