向启用文本框 (C#) 的 Web 部件添加按钮,出现错误:无法将类型“bool”隐式转换为“字符串”

Posted

技术标签:

【中文标题】向启用文本框 (C#) 的 Web 部件添加按钮,出现错误:无法将类型“bool”隐式转换为“字符串”【英文标题】:Add a button to a webpart that enables a text box (C#), getting an error: Cannot implicitly convert type 'bool' to 'string' 【发布时间】:2013-09-30 01:14:57 【问题描述】:

我已经向 webpart 添加了一个按钮 - 我想要启用它旁边的禁用文本框的功能。在部署时,我收到一个错误:无法将类型 'bool' 隐式转换为 'string'

当我转换为字符串以尝试解决问题 (JDHFBtn.OnClientClick = Convert.ToString(JDHFTxt.Enabled = true);) 时,它使文本框始终可编辑。我正在寻找解决问题的方法。请原谅我的无知 - 我是 C# 和 Web 部件的新手,并且在编程方面并不先进。谢谢。

这里是有问题的代码:

    sb.Append("</td>");
    sb.Append("         </tr>");
    sb.Append("         <tr class=\"row2\">");
    sb.Append("             <td class=\"rowTextLeft\" width=\"25%\">SPR/JDHF Allotment:</td>");
    sb.Append("             <td class = \"rowText\" td width=\"75%\">"); 
                                lc3 = new LiteralControl(sb.ToString());
                                Controls.Add(lc3); 
                                TextBox JDHFTxt = new TextBox(); 
                                JDHFTxt .ID = "txtJDHF"; 
                                JDHFTxt .Enabled = false;
                                JDHFTxt .Width = 100;
                                JDHFTxt .Text = ConvertToFunding(DrACE["SPRAllotment"].ToString()); 
                                Controls.Add(JDHFTxt); 
                                sb = new StringBuilder();

                                lc7 = new LiteralControl();
                                Controls.Add(lc7);
                                Button JDHFBtn = new Button();
                                JDHFBtn.ID = "btnJDHF";
                                JDHFBtn.CssClass = "plainButton";
                                JDHFBtn.Text = "Edit";
                                //JDHFBtn.OnClientClick = JDHFTxt.Enabled = true;
                                //JDHFBtn.Attributes.Add("OnClick, JDHFTxt.Enabled = true);
                                JDHFBtn.OnClientClick = Convert.ToString(JDHFTxt.Enabled = true);
                                Controls.Add(JDHFBtn);
                                sb = new StringBuilder();
sb.Append("</td>");
sb.Append("         </tr>");

【问题讨论】:

【参考方案1】:

那是因为您将值 true 分配给文本框而不是比较。把代码改成Convert.ToString(JDHFTxt.Enabled);

编辑 阅读您的 cmets 后,这就是您想要的:

JDHFBtn.OnClientClick = 
      "document.getElementById('" + JDHFTxt.ClientID + "').disabled = false;" +
      "return false;";

【讨论】:

感谢您的快速回复。我按照您所说的(我认为)实现了代码,但问题仍然存在。这就是我实施的 - 我是否正确地遵循了您的意图? JDHFBtn.OnClientClick = Convert.ToString(JDHFTxt.Enabled); 啊,请忽略 - 我做了缓存刷新(ctrl + F5),现在该框仍然禁用。但是,当我现在单击带有代码的按钮时,站点会刷新并且文本框仍然处于禁用状态。 当您点击按钮时您希望发生什么 当前 JDHFTxt 文本框设置为禁用。如果用户单击按钮,我希望启用文本框,以便他们可以更改值或输入值。 那你完全错了,你需要一些javascript来处理它。请参阅我的更新答案。

以上是关于向启用文本框 (C#) 的 Web 部件添加按钮,出现错误:无法将类型“bool”隐式转换为“字符串”的主要内容,如果未能解决你的问题,请参考以下文章

如果用户需要向现有选项添加新选项,如何在访问中创建一个组合框,该组合框可以转换为文本框以启用书写?

带有按钮、组合框和文本框的 C# WinForms (.NET Framework) DataGridView:使用按钮添加新行以添加组合框项时出错

如何向java jframe中添加下拉列表 按钮 文本框 最后把信息存储在文件里

根据WPF中的TextBox Text属性启用/禁用按钮?

如何在 Qt 中向工具栏添加按钮/操作以外的控件,例如文本框和组合框?

如何使用jquery从指针的当前位置向文本框添加文本?