【问题标题】:selecting checkbox from checkbox list on condition根据条件从复选框列表中选择复选框
【发布时间】:2011-04-18 20:57:12
【问题描述】:

我有 5 个复选框列表,每个复选框列表都有相同的 6 个复选框。 在某些条件下,我必须在page_Load 期间检查这些复选框列表。 我该怎么做?

for (int j = 0; j < no_of_listitem; j++)
{
    SqlCommand check = new SqlCommand("SELECT ISGoal1, ISGoal2,ISGoal3, ISGoal4,ISGoal5 FROM PRM2011_EMPLOYEE_GOAL WHERE EmployeeID = '" + employeeid[j] + "'", con);
    SqlDataReader y = check.ExecuteReader();
    while (y.Read())
    {
        if (null != y && y.HasRows)
        {
            string yes_or_no = y["ISGoal1"].ToString();
            yes_or_no = yes_or_no.Trim();
            if (yes_or_no == "Yes")
            {
                CheckBoxList1.Items[j].Selected = true;
            }

            //else CheckBoxList1.Items[j].Selected = false;

            yes_or_no = y["ISGoal2"].ToString();
            yes_or_no = yes_or_no.Trim();
            if (yes_or_no == "Yes")
            {
                CheckBoxList2.Items[j].Selected = true;
            }
            //else CheckBoxList2.Items[j].Selected = false;

            yes_or_no = y["ISGoal3"].ToString();
            yes_or_no = yes_or_no.Trim();
            if (yes_or_no == "Yes")
            {
                CheckBoxList3.Items[j].Selected = true;
            }
            //else CheckBoxList3.Items[j].Selected = false;

            yes_or_no = y["ISGoal4"].ToString();
            yes_or_no = yes_or_no.Trim();
            if (yes_or_no == "Yes")
            {
                CheckBoxList4.Items[j].Selected = true;
            }
            //else CheckBoxList4.Items[j].Selected = false;

            yes_or_no = y["ISGoal5"].ToString();
            yes_or_no = yes_or_no.Trim();
            if (yes_or_no == "Yes")
            {
                CheckBoxList5.Items[j].Selected = true;
            }
            //else CheckBoxList5.Items[j].Selected = false;
        }
    }
    y.Close();
}

employeeid[] 包含 6 个员工的 id。no_of_listitems 是 6,这是这 6 个员工 id 的列表。

【问题讨论】:

    标签: asp.net checkbox checkboxlist


    【解决方案1】:

    创建一个包含您的 CheckBoxList 的列表。然后,将代码替换为如下内容:

    for(int z = 1; z <= checkboxLists.Count; z++)
    {
        checkboxLists[z].Items[j].Selected = y["ISGoal" + z].ToString().Trim() == "yes";
    }
    

    请记住,此代码不是类型安全的。通常,您希望避免在代码中使用字符串,并且 y["ISGoal"+z] 可能为空。如果是,应用程序将崩溃。这意味着您要进行检查以确保一切正常。尝试在 null 上创建 ToString() 或 Trim() 将导致 NullPointerException。您可能还想在数据库中逐位更改“是”。与它一起工作会更安全。如果有人写“真”而不是“是”怎么办?

    希望对你有帮助。如果您有任何问题,请不要犹豫。

    【讨论】:

    • 我如何创建一个复选框列表?我的应用程序是这样的,没有人在写“是”或“否”。代码是这样的,如果选中该复选框,那么“是”将在数据库中更新。但是,您还打算如何处理这种情况。
    • List&lt;CheckBoxList&gt; checkboxLists = new List&lt;CheckBoxList&gt;(); checkboxLists.Add(CheckBoxList1);...
    • 通过在代码中写入“是”或“否”,您会无缘无故地使用数据库中的更多空间。一点将使用更少的空间,是一个更好的主意。通过制作 CheckBoxList 列表,您将能够在每个列表上循环,而不是复制和粘贴您在问题中发布的整个代码。
    猜你喜欢
    • 1970-01-01
    • 2017-05-20
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 2012-07-03
    • 2012-06-06
    相关资源
    最近更新 更多