asp.net Repeater控件使用问题

如图,数据库连接正常,与DataGrid的数据绑定,在<ASP:DataGrid>里面正常显示。
DataGrid1.DataSource=myDataReader DataGrid1.DataBind()
我用一样的方式加入: Repeater1.DataSource=myDataReader Repeater1.DataBind()
却提示“发生错误:未设置对象变量或 With 块变量。” 神啊~这是为什么?!
运行结果如图:

//你的绑定错了,Repeater并不支持直接将数据读取器传给它作为数据源
Repeater1.DataSource=myDataReader
Repeater1.DataBind()

//修改如下(C#代码,你改成你的vb就可以了)
//T就是你的类型
List<T> list=new List<T>();
while(myDataReader.Read())
{
    T t = new T();
    t.xxx=myDataReader.Read["字段"]
    list.Add(t);
}

//你需要先把你的读取器转换成集合
Repeater1.DataSource=list
Repeater1.DataBind()

追问

好吧@_@谢谢,我试试

追答

应该是可以的,祝你成功.

如果你不想把它转换成List集合,那你可以直接通过SqlDataApeater直接得到一个DataSet或者DataTable,然后直接赋值给Repeater

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-20
.aspx:

2

3

4

5

6

7

<asp:Repeater ID="SellerRpt" runat="server">

<ItemTemplate>

<li><a href='<%# Eval("SellerName")%>' target="_blank">

<%# Eval("ComName")%></a></li>

</ItemTemplate>

</asp:Repeater>

对应的后台cs中,在页面加载处加入数据绑定的代码:

2

3

4

5

6

7

8

9

10

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

DataTable dt = SellerDA.GetTopHotSellers(9);

SellerRpt.DataSource = dt;

SellerRpt.DataBind();

}

}

aspx中"SellerName"、"ComName"为DataTable 中的列名。

优化

直接使用DataItem可减少Eval函数的执行步骤,优化页面解析时间:

<%# ((DataRowView)Container.DataItem)["SellerName"]%>替换<%# Eval("SellerName")%>
第2个回答  2013-12-20
控件使用问题 你把<ul></ul> 弄到外面来了 正确的格式是这样的

<asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <ul> <li>123</li> </ul> </ItemTemplate> </asp:Repeater>
第3个回答  2013-12-20
控件使用问题追问

额,那Repeater控件该怎么用?

相似回答