【问题标题】:Foreach loop not looping through checkbox list asp .netForeach循环不循环通过复选框列表asp .net
【发布时间】:2021-03-05 21:59:33
【问题描述】:

我正在尝试读取 SQL 数据库中存在的值列表,如果该值存在,则需要选中复选框列表中的复选框。目前,我可以读取特定员工的值,但是当我尝试遍历复选框列表时,它会完全跳过它。我可以通过完美地检查项目来添加新的数据条目,但它只是导致问题的读取:

我下面的示例代码是为了测试它是否甚至循环通过复选框列表。

var asd = GetEmployeeSpecificDisabilities(idNum, connString); //returns a list of a specific employees disabilities;

string value = string.Empty;

foreach (ListItem item in disabilityList.Items)
{
    value += item.Selected ? item.Text + "," : "";

以下代码在添加新员工详细信息时完美运行:

//create new list object
EmployeeList newEmployee = new EmployeeList();
    
newEmployee.EmployeeNumber = txtEmployeeNumber.Text;
newEmployee.IDNumber = txtIDnumber.Text;
newEmployee.employeeSurname = txtSurname.Text;
newEmployee.employeeName = txtName.Text;
newEmployee.numberOfDependants = Convert.ToInt32(txtNumOfDependants.Text);
newEmployee.Race = lsRaces.SelectedValue;
newEmployee.Gender = lsGender.SelectedValue;
                    
//if employee has a disability
if (disabilityList.Visible == true)
{
    foreach (ListItem x in disabilityList.Items)
    {
        if (x.Selected)
        {
            newEmployee.Disabilityreference_Id = Convert.ToInt32(x.Value);
            newEmployee.CreateNewEmployee(connString, newEmployee);
        }
    }
} 
else
{
    newEmployee.CreateNewEmployee(connString, newEmployee);
}
    
Response.Redirect("Default.aspx");

前端代码:

<asp:CheckBoxList ID="disabilityList" runat="server" style="left: 19px; top: 3px; width: 266px; border:medium; padding:inherit" DataSourceID="Disabilities" DataTextField="DisabilityReference" DataValueField="Id" Visible ="true" CssClass="checkbox checkbox"  Font-Size="Medium">
        </asp:CheckBoxList>
        <asp:SqlDataSource ID="Disabilities" runat="server" ConnectionString="<%$ ConnectionStrings:EmployeeDBConnectionString %>" SelectCommand="SELECT * FROM [Disabilities]"></asp:SqlDataSource>

【问题讨论】:

    标签: c# sql asp.net .net foreach


    【解决方案1】:

    看来您需要迭代 GetEmployeeSpecificDisabilities 并与 disabilityList 进行比较:

    var employeeDisabilities = GetEmployeeSpecificDisabilities(idNum, connString);
     
    foreach(var employeeDisability in employeeDisabilities)
    {
        foreach (ListItem item in disabilityList.Items)
        {
            if(item.Value == employeeDisability.Disabilityreference_Id.ToString())
            {
                item.Selected = true;
            }
        }
    }
    

    【讨论】:

    • 谢谢你。我已经尝试过了,但问题是它在这种情况下无法识别变量“Item”。它按应有的方式循环了 5 次,但存在没有更改前端的循环。
    • 您在disabilityList 中没有任何项目吗?你在哪里初始化这个复选框列表?
    • 我在前端代码中初始化。除非我初始化不正确?但也许你可以建议?
    • 好像没问题,请问disabilityList有什么项目吗?
    • 我在disabilityList中有5个项目,它循环了5次,但如果没有得到元素,它看起来几乎一样
    猜你喜欢
    • 2015-10-29
    • 2016-04-10
    • 1970-01-01
    • 2014-06-29
    • 2020-12-02
    • 2020-05-01
    • 1970-01-01
    • 2021-04-30
    • 2020-02-19
    相关资源
    最近更新 更多