2013-05-07 18 views
0

我有以下代碼:如何使用「<%#綁定(」比較一個varchar燒焦

<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> 

但它不工作,因爲綁定(「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()函數中必須有一個方法來告訴它將CAST varchar char轉換爲char。或者可能是一個圍繞SelectedValue屬性來執行轉換的函數?

任何幫助表示讚賞。

謝謝

回答

0

找到解決方案!

我從查詢的角度解決了它。

我改變了查詢...

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

我知道CAST()是superflous,但RTRIM()是什麼做的,但強迫返回值只是爲VARCHAR( )在gridview數據源中,現在都可以完美比較。

這將是很好的知道我可以如何純粹從bind()函數做到這一點。