【问题标题】:Cannot convert type 'string' to 'bool' while binding List view绑定列表视图时无法将类型“字符串”转换为“布尔”
【发布时间】:2016-10-09 15:17:36
【问题描述】:

我尝试在ListView 中绑定 Checkbox Checked 属性,如下所示:

<asp:CheckBox ID="chk_holi_sal" runat="server" Class="chk_holi_sal" Checked="<%#:Item.HasSal%>" />

public bool HasSal
{
    get { return SALARY_CALC == 1; }
}

但我得到以下编译器错误:

编译器错误消息:CS0030:无法将类型“字符串”转换为“布尔”

我检查了&lt;%#:Item.HasSal%&gt; 的值,发现它等于TrueFalse

为什么我总是收到这个错误?


根据答案使用Eval 而不是利用strongly type 值的ListView 控件,我面临新的异常:

【问题讨论】:

  • 使用 Eval(Item.HasSal)
  • 正如错误代码所示,“Checked”是一个布尔值(true 或 false)。因为您在 eval 中调用了 .ToString() ,所以您有一个字符串。您需要使用布尔值

标签: c# asp.net entity-framework listview .net-4.5


【解决方案1】:

试试这段代码

<asp:CheckBox  ID="chk_holi_sal" runat="server" Checked="<%# Convert.ToBoolean(Eval("Item.HasSal")) %>"  />

或使用三元运算符

<asp:CheckBox  ID="chk_holi_sal" runat="server" Checked=
  <%# Convert.ToBoolean(Eval("Item.HasSal")) ? true : false %> /> 

【讨论】:

    【解决方案2】:

    以下行对我有用:

     <input id="chk_holi_sal" class="chk_holi_sal" type="checkbox" checked=' <%# Eval("HasSal") %>' disabled="disabled" runat="server" value="<%#:Item.HasSal%>" />
    

    我尝试使用strongly-Typed 功能但失败了,我必须使用Eval

    【讨论】:

      猜你喜欢
      • 2014-05-11
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多