当前位置: 代码网 > it编程>编程语言>Javascript > ASP.NET实现Repeater控件的数据绑定

ASP.NET实现Repeater控件的数据绑定

2024年05月18日 Javascript 我要评论
repeater基础在aspx文件中加入repeater 控件,在<itemtemplate></itemtemplate>包含的范围里加入自己控制的代码,需要替换的变量使用&

repeater基础

在aspx文件中加入repeater 控件,在<itemtemplate></itemtemplate>包含的范围里加入自己控制的代码,需要替换的变量使用<%# eval("sellername")%>;注意两侧的引号。

.aspx:

<asp:repeater id="sellerrpt" runat="server">
    <itemtemplate>
        <li><a href='<%# eval("sellername")%>' target="_blank">
            <%# eval("comname")%></a></li>
    </itemtemplate>
</asp:repeater>

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

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")%>

arraylist数据源

如果数据源是arraylist,并且arraylist为一列string数组,则可不用写出列名:

.aspx:

<asp:repeater id="topadhintrpt" runat="server">
    <itemtemplate>
        <asp:label id="barlabel" cssclass="bar" runat="server" text="|"></asp:label>
        <a href="#" rel="external nofollow" ><span>
            <%#container.dataitem%></span></a>
    </itemtemplate>
</asp:repeater>

.cs:

arraylist altertext;
adda.getindextoplist(out altertext);
topadhintrpt.datasource = altertext;
topadhintrpt.databind();

处理后显示

某些情况下,数据库中检索出来的数据并不适合直接显示出来,想要适当处理后显示(eg:日期的格式,字符串长度的控制),可使用标签来占位,在onitemdatabound函数中自行控制:

.aspx:

<asp:repeater id="repeater1" runat="server" onitemdatabound="prorpt_itemdatabound">
    <itemtemplate>
        <asp:label id="colindate" runat="server" text=""></asp:label>
    </itemtemplate>
</asp:repeater>

.cs:

protected void prorpt_itemdatabound(object sender, repeateritemeventargs e)
{
    if (e.item.itemtype == listitemtype.item || e.item.itemtype == listitemtype.alternatingitem)
    {
        datarowview rowv = (datarowview)e.item.dataitem;//找到分类repeater关联的数据项 
        string strdate = rowv["cldate"].tostring();
        label datelb = e.item.findcontrol("colindate") as label;
        datelb.text = strdate.substring(0, 10);
    }
}

嵌套reapeter的显示

对于某些复杂的显示逻辑,需用用到reapeter的嵌套,这里需要自行控制2层数据源的数据绑定:

.aspx:

<asp:repeater id="repeater1" runat="server" onitemdatabound="prorpt_itemdatabound">
    <itemtemplate>
        <asp:repeater id="pararpt" runat="server" onitemdatabound="pararpt_itemdatabound">
            <itemtemplate>
                <asp:label id="bar" cssclass="bar" runat="server" text="|"></asp:label>
                <span class="para">
                    <%# eval("name")%>:
                    <%# eval("value")%></span>
            </itemtemplate>
        </asp:repeater>
    </itemtemplate>
</asp:repeater>

.cs:

protected void prorpt_itemdatabound(object sender, repeateritemeventargs e)
{
    //判断里层repeater处于外层repeater的哪个位置( alternatingitemtemplate,footertemplate,
    //headertemplate,,itemtemplate,separatortemplate
    if (e.item.itemtype == listitemtype.item || e.item.itemtype == listitemtype.alternatingitem)
    {
        repeater rep = e.item.findcontrol("pararpt") as repeater;//找到里层的repeater对象
        datarowview rowv = (datarowview)e.item.dataitem;//找到分类repeater关联的数据项 
        string str = convert.tostring(rowv["pro_content"]); //获取填充子类的内容
        rep.datasource = product.fillpara(str);
        rep.databind();
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com