Я потратил слишком много времени на это сейчас, и я уверен, что я довольно близок к решению, но мне просто нужно «немного толкнуть» по краю.Связывание DataReader с ретранслятором ASP.NET
Я хочу захватить все поля из своего стола «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>
Так что же происходит здесь не так?
EDIT: Я обновил свой вопрос с работающим кодом, ответ а-ля Дэмиена Джо ниже:
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
cmd.ExecuteNonQuery() не требуется, поскольку вы уже выполняете чтение позже. –
Еще раз спасибо. Я отредактирую это. – adaam