朝のスタックオーバーフロー、
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」であるかどうかに関係なく、ページにデータが出力されません。ヘッダー テンプレートから「連絡先情報」の h1 ヘッダーを取得するだけです。
sqlsms で s の値をテストしましたが、正常に動作します。役職、姓、電話、ファックス、電子メールはすべてデータベースに存在します。私がチェックしている特定のページは存在し、連絡先情報が 1 セット添付されています。
どこが間違っていますか?
ありがとう!
ps。私の構文は正しいように見えますか?
pps。また、同じ結果を達成するためのさまざまな方法にもオープンです。sqldatasource 経由で試してみましたが、変数をパラメーターとして使用するときに問題が発生しました (変数を選択するオプションはなく、コントロール、クエリ文字列などのみ)。