C# 将数据列表中的动态数据插入数据库
我正在使用visual studio和c创建一个staff rota系统,其中staff表中的工作人员姓名显示在数据列表中。除此之外,我还在asp中创建了两个下拉列表,与Staff表分开,尽管它们出现在item template标记中,以便能够在Staff名称旁边动态创建它们。然后,用户可以从下拉列表中选择员工的轮班开始和结束时间 我决定使用数据列表和动态下拉列表,因为员工表会随着新员工的开始或离开而频繁更新,因此未来的rota可能包含不同数量的员工C# 将数据列表中的动态数据插入数据库,c#,asp.net,C#,Asp.net,我正在使用visual studio和c创建一个staff rota系统,其中staff表中的工作人员姓名显示在数据列表中。除此之外,我还在asp中创建了两个下拉列表,与Staff表分开,尽管它们出现在item template标记中,以便能够在Staff名称旁边动态创建它们。然后,用户可以从下拉列表中选择员工的轮班开始和结束时间 我决定使用数据列表和动态下拉列表,因为员工表会随着新员工的开始或离开而频繁更新,因此未来的rota可能包含不同数量的员工 <table class="s
<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") %>'/>
<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表,因为它们没有标识,因此我无法将它们输入存储过程的参数中。将数据列表的DataKeyField设置为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属性的详细信息:我已编辑了您的标题。请看,如果共识是否定的,他们不应该。伙计,你必须在这里分享代码。。。我没有很多药草可以想象你做了什么。。。谢谢你的回复。我已经在上面插入了您的建议,尽管在我尝试创建要插入到数据库中的参数时,无法识别staffID和下拉列表。当您说为它们创建参数时,您的意思是使用SqlDataSource吗?这是因为它们嵌入在DataList中:它们位于与SqlDataSource不同的命名容器中,SqlDataSource由DataList的DataListItems定义。您必须在代码中完成这项工作,通过循环遍历DataListItems并按照我在示例中显示的方式检索值。
for(int index = 0;index < DataList1.Items.Count;index++)
{
int staffID = (int) DataList1.DataKeys[index];
DropDownList ddStartShift = (DropDownList) DataList1.Items[index].FindControl("ddStartShift");
// etc.
}