1
我試圖從我寫入到數據列表中的所有超鏈接的SQL代碼中綁定列。這應該是很簡單的,但我得到的錯誤在數據列表中的超鏈接上更改文本
數據綁定:「System.Data.Common.DataRecordInternal」不包含 名爲「NumberOfComments」的屬性。
嗯,我很確定列存在,但在這種情況下,它是由一個函數創建的,也許與它有關。當我運行SQL代碼時,我得到了我應該的值。
的超級鏈接
<asp:HyperLink ID="lnkComment" runat="server"
NavigateUrl='<%# Eval("ID", "~/Default.aspx?ID={0}") %>'
Text='<%# Eval("NumberOfComments") %>'></asp:HyperLink>
在SqlDataSource
<asp:SqlDataSource ID="sdsNews" runat="server"
ConnectionString="<%$ ConnectionStrings:ASPNETDBConnectionString %>" SelectCommand="SELECT News.ID, News.Topic, News.Text, News.PostTime, aspnet_Users.UserName, "NumberOfComments" = dbo.fnNumberOfCommentOnNews(News.ID)
FROM News INNER JOIN
aspnet_Users ON News.UserId = aspnet_Users.UserId
WHERE (News.ID = ISNULL(@ID, News.ID))
ORDER BY News.PostTime DESC ">
<SelectParameters>
<asp:QueryStringParameter DbType="Guid" Name="ID" QueryStringField="ID" DefaultValue="" />
</SelectParameters>
</asp:SqlDataSource>
你不能在連接字符串中寫「這就是爲什麼我使用它們,但這與問題無關 – Frozendragon
我不是指ConnectionString,除非這是複製粘貼的結果,否則我相信替換在選擇命令中帶有一個單引號周圍NumberOfComments的HTML代碼"應該可以解決這個問題。你是否檢查了發送給SQL服務器的實際SQL語句?(你可以在Sql Server Management Studio Profiler中做到這一點。工具 - > Sql Server Profiler ) – Orry
嘗試替換NavigateUrl分配NavigateUrl ='<%#String.Format(「〜/ Default.aspx?ID = {0}」,Eval(「ID」)) – Orry