日期:2014-05-18  浏览次数:20394 次

关于Repeater的问题。。。
<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>