Повторитель не повторяется: 0) (asp.net) (vb) - PullRequest
0 голосов
/ 15 апреля 2010

Утренний стекопоток,

У меня есть повторитель со следующим кодом на моей странице 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 «контактная информация» из шаблона заголовка.

Я проверил значение s в sqlsms, и оно отлично работает. Должность, фамилия, телефон, факс, электронная почта все существуют в БД. Конкретная страница, которую я проверяю, существует и содержит 1 набор контактных данных.

Куда я иду не так?

Спасибо!

пс. Мой синтаксис выглядит правильным?

имп. Я также открыт для разных способов достижения одного и того же результата. Я пытался через sqldatasource, но столкнулся с проблемами при использовании переменных в качестве параметров (нет возможности выбрать их, только элементы управления, строка запроса и т. Д.)

1 Ответ

0 голосов
/ 15 апреля 2010

Решением было изменить блоки кода за;

 If r.HasRows Then
                Contactinforepeater.DataSource = r
                Contactinforepeater.DataBind()
            End If

Приветствия

...