私は今これにあまりにも長い時間を費やしてきました.私は解決策にかなり近づいていると確信しています.
テーブル「FamousQuotes」からすべてのフィールドを取得し、リピーターで繰り返したいと思います。残念ながら、現時点ではこれは機能していません。コンパイル時のエラーは発生しませんが、実行時にリピーターにデータが表示されることもありません
これが私のコードビハインドです:
Sub randomQuote()
Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
conn.Open()
Dim cmd As New OleDbCommand("SELECT TOP 1 * FROM [FamousQuotes] ORDER BY rnd(INT(NOW*id)-NOW*id)", conn)
cmd.ExecuteNonQuery()
Dim datareader As OleDbDataReader = cmd.ExecuteReader()
If datareader.HasRows Then
datareader.Read()
quoteCascade.DataSource = datareader
quoteCascade.DataBind()
datareader.Close()
datareader = Nothing
End If
conn.Close()
End Sub
私のリピーターコードを見る必要はないかもしれませんが、特に目立ったものではありません。
<asp:Repeater id="quoteCascade" runat="server">
<ItemTemplate>
<blockquote>
"<%#Container.DataItem("Quote")%>"
<small>
<%#Container.DataItem("SourceName")%><cite title="Source Title">
<%#Container.DataItem("SourceTitle")%></cite></small>
</blockquote>
</ItemTemplate>
</asp:Repeater>
それで、ここで何がうまくいかないのですか?
編集:私は、以下のダミアン・ジョーの答えである作業コードで質問を更新しました:
Sub randomQuote()
Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
conn.Open()
Dim cmd As New OleDbCommand("SELECT TOP 6 * FROM [FamousQuotes] ORDER BY rnd(INT(NOW*id)-NOW*id)", conn)
quoteCascade.DataSource = cmd.ExecuteReader()
quoteCascade.DataBind()
conn.Close()
End Sub