加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Repeater的SeparatorTemplate与Eval

发布时间:2020-12-16 09:44:24 所属栏目:asp.Net 来源:网络整理
导读:是否可以在Repeater的SeparatorTemplate中使用Eval或类似的语法? 我想在分隔符模板中显示最后一项的一些信息,如下所示: table asp:Repeater ItemTemplate tr td%# Eval("DepartureDateTime") %/td td%# Eval("ArrivalDateTime") %/td /tr /ItemTemplate Se
是否可以在Repeater的SeparatorTemplate中使用Eval或类似的语法?

我想在分隔符模板中显示最后一项的一些信息,如下所示:

<table>
    <asp:Repeater>
        <ItemTemplate>
            <tr>
                <td><%# Eval("DepartureDateTime") %></td>
                <td><%# Eval("ArrivalDateTime") %></td>
            </tr>
        </ItemTemplate>
        <SeparatorTemplate>
            <tr>
                <td colspan="2">Change planes in <%# Eval("ArrivalAirport") %></td>
            </tr>
        </SeparatorTemplate>
    <asp:Repeater>
<table>

跳跃它会产生这样的东西:

<table>
    <asp:Repeater>
            <tr>
                <td>2009/01/24 10:32:00</td>
                <td>2009/01/25 13:22:00</td>
            </tr>
            <tr>
                <td colspan="2">Change planes in London International Airport</td>
            </tr>
            <tr>
                <td>2009/01/25 17:10:00</td>
                <td>2009/01/25 22:42:00</td>
            </tr>
    <asp:Repeater>
<table>

但是SeparatorTemplate似乎忽略了Eval()调用.我尝试使用以前的语法:<%#DataBinder.Eval(Container.DataItem,“ArrivalAirport”)%>结果相同.

是否可以在SeparatorTemplate中显示上一项的信息?如果没有,您能否建议另一种方法来生成此代码?

谢谢

解决方法

试试这个:

在WebForm的类中添加一个私有变量(或两个),您可以使用该变量来增加/跟踪在项目级别执行数据绑定时的航班信息.

然后在ItemDatabound事件中,如果正在数据绑定的项是ListItemType.Seperator类型并以这种方式显示/隐藏/修改您的分隔符代码,则可以执行简单的求值.

您的WebForm页面在顶部看起来像这样:

public partial class ViewFlightInfo : System.Web.UI.Page
{

    private int m_FlightStops;

    protected page_load
    {

        // Etc. Etc.

    }
}

然后当你开始数据绑定时:

protected void rFlightStops_ItemDataBound(object sender,RepeaterItemEventArgs e)
{
    Repeater rFlightStops = (Repeater)sender;

    if (e.Item.ItemType == ListItemType.Header)
    {
        // Initialize your FlightStops in the event a new data binding occurs later. 
           m_FlightStops = 0;
    }

    if (e.Item.ItemType == ListItemType.Item
        || e.Item.ItemType == ListItemType.AlternatingItem)
    {
         // Bind your Departure and Arrival Time
         m_FlightStops++;
     }

    if (e.Item.ItemType == ListItemType.Seperator)
    {
       if (m_FlightStops == rFlightStops.Items.Count - 1)
       {
           PlaceHolder phChangePlanes = 
                    (PlaceHolder)e.Item.FindControl("phChangePlanes");
           phChangePlanes.Visible = false;
       }
    }
 }

……或者这种效果.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读