ReadOnly属性不适用于TextBox

时间:2015-04-01 17:14:28

标签: c# asp.net textbox attributes

我正在从VS2003转换为VS2005,并且作为转化的一部分,我需要更改我们当前为ReadOnly控件设置textbox属性的方式

之前我们有以下代码:

private void EnableHistory(bool state)
{
  TextBox itbNewHistory = UltraWebTab1.FindControl("tbNewHistory") as TextBox;

  if( itbNewHistory != null )
  {
     itbNewHistory.Enabled = state;                                       
     itbNewHistory.ReadOnly = ! state;
  }
}

新代码是:

private void EnableHistory(bool state)
{
    TextBox itbNewHistory = UltraWebTab1.FindControl("tbNewHistory") as TextBox;

    if( itbNewHistory != null )
    {
        itbNewHistory.Enabled = state;
        string hSwitch = Convert.ToString(!state);
        itbNewHistory.Attributes["readonly"] = hSwitch;                                
     }
}

另外,我从ReadOnly = "true"代码

中删除了asp.aspx属性

使用新代码时,ReadOnly属性始终为true

为什么会发生这种情况,我该如何解决呢?

谢谢

2 个答案:

答案 0 :(得分:1)

它总是只读的原因是因为HTML的工作方式。

在HTML中,仅仅“readonly”(或“禁用”)属性的存在使其成为只读,即使它显示readonly="false",它仍然是只读的,因为存在readonly属性。

如果您不希望它只读取,那么您必须删除该属性(如果存在),或者如果不存在则不添加该属性。此外,readonly属性的实际值应该只读:readonly="readonly"不是true或false。

itbNewHistory.Attributes.Remove("readonly");
if(state)
    itbNewHistory.Attributes.Add("readonly", "readonly");

答案 1 :(得分:0)

尝试以下可能有帮助

rohSolutions.Attributes.Remove("ReadOnly");
itbNewHistory.Attributes.Add("ReadOnly", hSwitch.ToString());