Morning stackoverflow,
我有一个转发器,在我的aspx页面中包含以下代码;
<asp:Repeater ID="Contactinforepeater" runat="server">
<HeaderTemplate>
<h1>Contact Information</h1>
</HeaderTemplate>
<ItemTemplate>
<table width="50%">
<tr>
<td colspan="2"><%#Container.DataItem("position")%></td>
</tr>
<tr>
<td>Name:</td>
<td><%#Container.DataItem("surname")%></td>
</tr>
<tr>
<td>Telephone:</td>
<td><%#Container.DataItem("telephone")%></td>
</tr>
<tr>
<td>Fax:</td>
<td><%#Container.DataItem("fax")%></td>
</tr>
<tr>
<td>Email:</td>
<td><%#Container.DataItem("email")%></td>
</tr>
</table>
</ItemTemplate>
<SeparatorTemplate>
<br /><hr /><br />
</SeparatorTemplate>
</asp:Repeater>
然后我在aspx.vb中有了这段代码来获取数据;
If did = 0 Then
s = "sql works on db server"
x = New SqlCommand(s, c)
x.Parameters.Add("@contentid", Data.SqlDbType.Int)
x.Parameters("@contentid").Value = contentid
c.Open()
r = x.ExecuteReader
r.Read()
Contactinforepeater.DataSource = r
Contactinforepeater.DataBind()
End If
c.Close()
r.Close()
If Not did = 0 Then
s = "sql works on db server"
x = New SqlCommand(s, c)
x.Parameters.Add("@contentid", SqlDbType.Int)
x.Parameters("@contentid").Value = contentid
x.Parameters.Add("@did", SqlDbType.Int)
x.Parameters("@did").Value = did
c.Open()
r = x.ExecuteReader
r.Read()
Contactinforepeater.DataSource = r
Contactinforepeater.DataBind()
End If
r.Close()
c.Close()
如果'did'是'0'还是不'0',我仍然没有输出到页面的数据。我只是从标题模板中获取“联系信息”h1标题。
我已经用sqlsms测试了s的值,它运行正常。数据库中存在位置,姓氏,电话,传真,电子邮件。我检查的特定页面存在,并附有一组联系信息。
我哪里错了?
PS。我的语法是否正确?
PPS。我也对实现相同结果的不同方式持开放态度。我尝试通过sqldatasource但在使用变量作为params时遇到问题(没有选择它们的选项,只有控件,查询字符串等)
答案 0 :(得分:0)
解决方案是将代码隐藏块更改为;
If r.HasRows Then
Contactinforepeater.DataSource = r
Contactinforepeater.DataBind()
End If
干杯