<asp:Repeater></asp:Repeater>里的数据是从数据库读出来的,怎么控制显示规定行数?除了改sql语句还有没有别的办法?!
------解决方案--------------------------------------------------------
这个是由你给的数据源决定的啊 ~~~~~~~~
给他几条,它显示几条....(你只要考虑...怎么得到你想要的数据源行数就行了啊~~ )
比如: select top 10 或者 select top 5
------解决方案--------------------------------------------------------
<%#Container.ItemIndex+1 %> 得到集合中项的索引
在后台写一个方法 把所需要的参数在前天都传过去,在后台拼接Container.ItemIndex+1 应该是可以认为是行数在后台循环,不过这样子的话 就不用Repeater了
还有一个是在后台写方法循环你索要得到的行数直接拼接 给一个变量
前台变量输出
------解决方案--------------------------------------------------------
除了改sql语句还有没有别的办法?!
从数据库里,读出来之后再过滤。。。。。。。。行不?
------解决方案--------------------------------------------------------
在Repeater的项模板里,最外层放个html控件,比如:
- HTML code
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound"> <ItemTemplate> <div id="divContainer" runat="server"></div> </ItemTemplate> </asp:Repeater>
------解决方案--------------------------------------------------------
private DataTable subtable(int i, int j, DataTable dt)
{
int t;
DataTable table = new DataTable();
for (t = 0; t < dt.Columns.Count; t++)
table.Columns.Add(dt.Columns[t].ColumnName.ToString());
for (t = i; t < j; t++)
table.Rows.Add();
for (t = 0; t < dt.Columns.Count; t++)
for (int r = i; r < j; r++)
table.Rows[r - i][t] = dt.Rows[r][t];
return table;
}
直接将table取出n行来。
------解决方案--------------------------------------------------------
- C# code
public static int PageBindRepeater(int curPage,int pageSize, Repeater rep,string strSql) { PagedDataSource pds = new PagedDataSource(); pds.DataSource = DbHelperSQL.GetTable(strSql).DefaultView; pds.AllowPaging = true; pds.PageSize = pageSize; pds.CurrentPageIndex = curPage - 1; rep.DataSource = pds; rep.DataBind(); return pds.PageCount; }
------解决方案--------------------------------------------------------
其实这样就可以了:
- HTML code
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound"> <ItemTemplate> <%#Eval("姓名") %><br /> </ItemTemplate> </asp:Repeater>