【问题标题】:How to use "<%# bind(" to compare a varchar to char?如何使用 "<%# bind(" 将 varchar 与 char 进行比较?
【发布时间】:2013-04-30 20:21:42
【问题描述】:

我有以下代码:

<asp:DropDownList ID="ddlStudyYear" runat="server" SelectedValue='<%# Bind("StudyYearID") %>' DataSourceID="sdsStudyYears" DataTextField="StudyYearID" DataValueField="StudyYearID"></asp:DropDownList>
<asp:SqlDataSource ID="sdsStudyYears" runat="server" ConnectionString="<%$ ConnectionStrings:ATCNTV1ConnectionString %>" SelectCommand="SELECT StudyYearID FROM tblStudyYears ORDER BY StudyYearID"></asp:SqlDataSource>

但它不起作用,因为 Bind("StudyYearID") 来自代码下方的另一个 SqlDataSource,它返回一个 VARCHAR(3)。但是,上面的数据源 (sdsStudyYears) 返回一个值作为 CHAR(3)。

所以当我运行它时,我收到以下错误:

'ddlStudyYear' has a SelectedValue which is invalid because it does
not exist in the list of items.

我也无法在网上找到它,但是 Bind() 函数中必须有一种方法可以告诉它将 varchar 转换为 char。或者可能是围绕 SelectedValue 属性的函数来执行转换?

任何帮助表示赞赏。

谢谢

【问题讨论】:

    标签: asp.net data-binding casting char varchar


    【解决方案1】:

    找到解决方案!

    我从查询的角度解决了。

    我将查询更改为 ...

    SELECT RTRIM(CAST(CASE WHEN StudyYearID = '0' THEN ' ' ELSE StudyYearID END AS VARCHAR(3))) AS StudyYearID FROM tblStudyYears
    

    我知道 CAST() 是多余的,但 RTRIM() 是这样做的,但强制返回值与 gridview 数据源中的 VARCHAR() 一样,现在两者都可以完美比较。

    很高兴知道我是如何仅通过 bind() 函数完成此操作的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2013-12-21
      • 2013-06-24
      • 1970-01-01
      相关资源
      最近更新 更多