2011-12-05 47 views
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, &quot;NumberOfComments&quot; = 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> 

回答

0

爲什麼你有 「&quot;」 周圍NumberOfComments字段名?

嘗試將選擇命令粘貼到SSMS(SQL Server Mgmt studio)中,並且您絕對應該得到不正確的語法錯誤。如果你刪除這些「HTML代碼」,你仍然可以引用並綁定到該列。

+0

你不能在連接字符串中寫「這就是爲什麼我使用它們,但這與問題無關 – Frozendragon

+0

我不是指ConnectionString,除非這是複製粘貼的結果,否則我相信替換在選擇命令中帶有一個單引號周圍NumberOfComments的HTML代碼"應該可以解決這個問題。你是否檢查了發送給SQL服務器的實際SQL語句?(你可以在Sql Server Management Studio Profiler中做到這一點。工具 - > Sql Server Profiler ) – Orry

+0

嘗試替換NavigateUrl分配NavigateUrl ='<%#String.Format(「〜/ Default.aspx?ID = {0}」,Eval(「ID」)) – Orry