【问题标题】:ASP.Net checkboxes and if statementsASP.Net 复选框和 if 语句
【发布时间】:2014-07-09 19:34:33
【问题描述】:

我被要求开发一个应用程序,其中成员可以选择 1 个计划、计划组合、所有计划或无。

plan1, plan2, plan3, .... plan12

我跑了真值表找出有多少种可能性,结果是4096。(荒谬!)

我的计划是为每个可能性写一个if 声明,如下所示:

if (plan1.Checked == true && plan2.Checked == false && ... && plan12.Checked == false){
    // insert into into table test VALUES('Plan1')
}

等等!显然,一定有比这更好更简单的方法。任何建议都会有所帮助。谢谢大家。

【问题讨论】:

  • 如果计划被选中会怎样?是否针对该计划采取了具体行动?还是在检查某些计划而未检查其他计划时会发生特定的事情?
  • 当检查计划时,假设检查了 plan1,文本让它命名 plan1 被导入到数据库中的一个表中,该表稍后将链接到另一个表以返回一个值。如果检查了两个计划,plan1 和 plan5,则将插入数据库“plan1plan5”
  • 这将存储plan1plan3,因为在另一个表上我们有两列,一列称为planIds,一列称为计划Rate,基本上plan1plan3将链接到该表,其计划Rate是plan1 * plan3跨度>
  • 我建议考虑使用按位逻辑来处理这个问题,这可能会很有帮助:stackoverflow.com/a/8480/1316573

标签: asp.net .net sql-server


【解决方案1】:

如果您使用CheckBoxList 或类似组件,这将是一种方法。

CheckBoxList checkBoxList = ....;  // Just an example here
// You would add the different project names into the CheckBoxList

String message = "";

for (int i = 0; i < checkBoxList.Items.Count; i++) // Look at every project name
{
    if (checkBoxList.Items[i].Selected) // See if it's selected
    {
        message += checkBoxList.Items[i].Text; // Add the name to the message
    }
}

Put message in DB; // <-- Store the message into your database here

由于您只对选定的项目感兴趣,因此您根本不必处理未选定的项目。

注意:可能有比这更好/更有效的创建字符串的方法,您也许可以使用 lambda 表达式。这只是展示一个简单的方法。

【讨论】:

    【解决方案2】:

    Andrew_CS 答案很合适,我更喜欢它,但这是另一种方式:

    在所有复选框后面的代码中处理选中的事件(使用一个事件,但允许所有复选框由它处理),并根据发送者,然后您可以加载您想要的信息。

    可能是在checkbox选中事件期间使用Select语句为每个checkbox加载相关信息(可能比for循环更容易理解!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多