#asp.net #repeater #sqldatareader
#asp.net #повторитель #sqldatareader
Вопрос:
Я разрабатываю социальную сеть, в которой я должен показывать список друзей текущему пользователю.
я использую SqlDataReader для извлечения данных из базы данных, а затем привязываю их к повторителю, проблема в том, что повторитель всегда пропускает первый результат, поэтому он показывает только n-1 результат из n. кто-нибудь может объяснить мне это поведение?
мой код:
string cmdstr2 = "SELECT students.fname, students.lname,students.username FROM students INNER JOIN friends ON students.username = friends.tostudent WHERE (friends.fromstudent ='" cuser "')";
SqlCommand cmd2 = new SqlCommand(cmdstr2, sc);
SqlDataReader rd = cmd2.ExecuteReader();
if (rd.Read())
{
Repeater1.DataSource = rd;
Repeater1.DataBind();
}
в режиме конструктора я написал этот код, чтобы включить repeater на страницу:
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<div style="font-size:xx-large;">
الأصدقاء</div>
</HeaderTemplate>
<ItemTemplate>
<div style="font-size:x-large; color:Black; margin-right:0px; margin-top:0px;">
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# "student.aspx?user=" DataBinder.Eval(Container.DataItem,"username")%>' >
<%#DataBinder.Eval(Container.DataItem, "fname")%>amp;nbsp;<%#DataBinder.Eval(Container.DataItem, "lname")%>
</asp:HyperLink>
</div>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
Ответ №1:
Ваш rd.Read() в вашем операторе if продвигает его на 1 запись
Попробуйте использовать:
if (rd.HasRows)