【问题标题】:how to cast System.String to System.Web.UI.WebControls.CheckBox in asp.net?如何在 asp.net 中将 System.String 转换为 System.Web.UI.WebControls.CheckBox?
【发布时间】:2011-10-17 05:50:17
【问题描述】:

我是 asp.net 的新手,我想在 asp.net 中将 System.String 转换为 System.Web.UI.WebControls.CheckBox?

我正在开发一个购物网站。在那我有一些复选框控件。我希望保持网页上每个复选框控件的选中状态。为此,我动态创建了一个数据表,当用户检查特定复选框控件时,我将数据表中的复选框名称存储为字符串数据类型。并且根据复选框名称,我想检查我网站特定页面上的特定复选框控件。所以这就是我需要以上转换的原因。

对于这种情况还有其他解决方案吗?

谢谢。

【问题讨论】:

  • 我认为不可能。你需要这种类型的转换
  • 更清楚地解释您希望完成的任务。你的提议完全不正确
  • 你不能转换——类型不相关。也许创建一个 CheckBox,然后根据 String 的内容为其分配一个值? (阅读:解释真正想要什么?)

标签: asp.net web-applications casting type-conversion


【解决方案1】:

您不能将 string 转换为 System.Web.UI.WebControls.CheckBox,因为它们不是兼容的类型。

您需要从数据库中获取复选框名称并在您的页面上找到它。

假设您从数据库中读取名称“chkProduct”,您需要执行以下操作,例如:

(this.FindControl("chkProduct") as CheckBox).Checked=true;

当然上面的代码是不安全的。您应该检查 NULL 等。也许您的控件嵌套在另一个容器中,在这种情况下,您需要递归查找它。

但实际上,您不需要“查找”任何内容,因为您的复选框控件可能已在您的标记中定义(除非您动态绑定它们)。如果它们在标记中定义,您可以简单地使用 if/else 语句:

if(name=="chkProduct")
  chkProduct.Checked=true;
if(name=="chkColorRed")
 chkColorRed.Checked=true;

等等……

【讨论】:

    【解决方案2】:

    将您的复选框与数据项绑定

    【讨论】:

    • 我没有桌子。而且我的复选框控件是未绑定控件。
    • 你说:“我动态创建了一个数据表,当用户检查特定复选框控件时,我将数据表中的复选框名称存储为字符串数据类型”
    • 这就是我想说的,在单击复选框后,我只是在我的数据表中插入复选框的名称。而且我认为您误解了我,我的复选框最初绑定到我的数据表,这就是您正在考虑的。
    【解决方案3】:

    我认为您需要使用checkbox list,并且您可以使用 Item.value 存储在您的数据表中,因为它易于维护。

    我用过这个

    foreach (ListItem li in chbCategory.Items)
                {
                    DataRow dr = dt.NewRow();
    
                    if (li.Selected == true)
                    {
                        dr["Id"] = li.Value;
                        dr["Status"] = 1;
                    }
                    else
                    {
                        dr["Id"] = li.Value;
                        dr["Status"] = 0;
                    }
                    dt.Rows.Add(dr);
                }
    

    用于将所选项目存储在datatable中。

    【讨论】:

      【解决方案4】:

      我通过以下方法解决了这个问题-

      Dim chkname as string = dt.Rows(0).Item("ChkBoxName")
      Dim chk As CheckBox = CType(Page.FindControl(chkname), CheckBox)
      chk.Checked = True
      

      【讨论】:

        猜你喜欢
        • 2010-10-23
        • 2019-12-07
        • 1970-01-01
        • 2010-10-14
        • 1970-01-01
        • 2014-11-11
        • 2012-09-07
        • 1970-01-01
        • 2021-07-31
        相关资源
        最近更新 更多