我现在在这方面花了太长时间,我很确定我已经很接近解决方案了,但我只需要在边缘“稍微推动一下”。
我想从我的表“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