在将其绑定到转发器控件时丢失检索到的数据的第一个结果

时间:2014-07-05 01:56:31

标签: asp.net repeater sqldatareader

我正在开发一个社交网络,我必须向当前用户显示朋友列表。

我正在使用SqlDataReader从数据库中检索数据然后通过转发器绑定它,问题是转发器总是跳过第一个结果,所以它只显示n中的n-1个结果。任何人都可以向我解释这种行为吗?

我的代码是:

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();
        }

在设计视图中,我已编写此代码以在页面中包含转发器:

<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")%>&nbsp;<%#DataBinder.Eval(Container.DataItem, "lname")%>
                </asp:HyperLink>
                                    </div>

                        </ItemTemplate>
                        <FooterTemplate>
                        </FooterTemplate>
                    </asp:Repeater>

1 个答案:

答案 0 :(得分:0)

你的if语句中的 rd.Read()正在推进1条记录

尝试使用:

if (rd.HasRows)