gpt4 book ai didi

visual-studio-2010 - 字符串未被识别为有效的 bool 值。 - 与 C# 相关的错误。 GridView CheckBoxField

转载 作者:行者123 更新时间:2023-12-04 04:53:36 28 4
gpt4 key购买 nike

这里是编程环境。

  • 框架:ASP.NET 框架 4
  • 语言:Visual C# 2010
  • 数据库:Oracle 数据库 11g

  • 这是场景。
    我正在从 HR 示例架构的 HR.EMPLOYEES 表中创建一个 GridView。我正在尝试将来自 COMMISSION_PCT 列的传入数据转换为 bool 值,并使用 COMMISSION_PCT 的 DataField 下的复选框填充 GridView,因此在此字段中具有值的员工将显示为选中的复选框。这是目前 GridView 对象控件的外观。
    <asp:GridView ID="GridViewEmployees" runat="server" AllowSorting="True" CellPadding="4"
    DataSourceID="SqlDataSourceOracle" GridLines="None" AutoGenerateColumns="False">
    <Columns>
    <asp:BoundField DataField="EMPLOYEE_ID" HeaderText="Employee ID" SortExpression="EMPLOYEE_ID" />
    <asp:BoundField DataField="FIRST_NAME" HeaderText="First Name" SortExpression="FIRST_NAME" />
    <asp:BoundField DataField="LAST_NAME" HeaderText="Last Name" SortExpression="LAST_NAME" />
    <asp:BoundField DataField="EMAIL" HeaderText="E-mail Address" SortExpression="EMAIL" />
    <asp:BoundField DataField="PHONE_NUMBER" HeaderText="Phone Number" SortExpression="PHONE_NUMBER" />
    <asp:BoundField DataField="HIRE_DATE" HeaderText="Hire Date" SortExpression="HIRE_DATE" />
    <asp:BoundField DataField="JOB_ID" HeaderText="Job ID" SortExpression="JOB_ID" />
    <asp:BoundField DataField="SALARY" HeaderText="Salary" SortExpression="SALARY" />
    <asp:CheckBoxField DataField="COMMISSION_PCT" HeaderText="Receives Commission" SortExpression="COMMISSION_PCT" />
    <asp:BoundField DataField="MANAGER_ID" HeaderText="Manager ID" SortExpression="MANAGER_ID" />
    <asp:BoundField DataField="DEPARTMENT_ID" HeaderText="Department ID" SortExpression="DEPARTMENT_ID" />
    </Columns>
    </asp:GridView>
    当然,当我尝试按原样预览页面时,我会收到以下错误消息:
    “/”应用程序中的服务器错误。

    字符串未被识别为有效的 bool 值。
    说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
    异常详情: System.FormatException: 字符串未被识别为有效的 bool 值。
    源错误:
    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
    堆栈跟踪:
    [FormatException: String was not recognized as a valid Boolean.]
    ...

    [HttpException (0x80004005): The data in the CheckBoxField 'COMMISSION_PCT' could not be parsed as a boolean value. Try using a BoundField instead.]
    ...
    到目前为止,我考虑过对 SQL 语句使用 DECODE,但这仍然会返回一个字符串值。不幸的是,由于 C# 包含强类型编程规则,而 Oracle 不支持 SQL 语句中的 bool 数据类型,看来我需要使用背后的代码进行这种转换。对如何实现这一目标有任何建议吗?

    最佳答案

    在幕后,我猜 Boolean.Parse正在调用它需要一个像“false”这样的字符串。如果是这种情况,则 case decode 或 case 语句应该起作用:

    select decode(commission_pct,0,"false", "true") as has_commission
    from your_table

    这个例子对我有用:
      <form id="form1" runat="server">
    <div>
    <asp:GridView ID="PnlData" runat="server" DataSourceID="SqlDataSource1">
    <Columns>
    <asp:CheckBoxField DataField="Bln" HeaderText="Bln Test" SortExpression="Bln" />
    </Columns>
    </asp:GridView>
    </div>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
    ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="select 'true' as bln from dual union select 'false' as bln from dual union select 'True' as bln from dual">
    </asp:SqlDataSource>
    </form>

    关于visual-studio-2010 - 字符串未被识别为有效的 bool 值。 - 与 C# 相关的错误。 GridView CheckBoxField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17071971/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com