在的ItemDataBound中继器嵌套 [英] ItemDataBound in Nested repeater

查看:135
本文介绍了在的ItemDataBound中继器嵌套的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个嵌套Repeater在我的网页表单,我把两个ObjectDataSource的每个中继器。

我有这种方法在我repositiry:

 公开的IQueryable< TourDate> GetById(INT标识)
{
    返回model.TourDates.Where(E => e.TourId == ID);
}

我需要设置ItemDataBound事件。

在我写这篇code为ItemDataBound事件:

 保护无效RptTourDetail_ItemDataBound(对象发件人,RepeaterItemEventArgs E)
{
   如果(e.Item.ItemType == || ListItemType.AlternatingItem
    e.Item.ItemType == ListItemType.Item)
{
VAR的DataItem = e.Item.DataItem;
ObjectDataSource控件ObjectDataSource1 =(ObjectDataSource控件)e.Item.FindControl(ObjectDataSource1);
    ObjectDataSource1.SelectParameters [TourId] =默认值dataItem.TourId。
 }
}

但它dosent承认TourId最后line.I觉得有什么错的是没有这种

  VAR的DataItem = e.Item.DataItem;

没有任何人有任何想法什么问题呢?

如果需要一些解释有关projcet:

这里是我的模型

和HTML:

 < ASP:ObjectDataSource控件ID =ODSTTitle=服务器SelectMethod =GetById的TypeName =ATourRep>
        < SelectParameters>
            < ASP:QueryStringParameter默认值=0NA​​ME =IDQueryStringField =CIDTYPE =的Int32/>
        < / SelectParameters>
    < / ASP:ObjectDataSource控件>< ASP:ObjectDataSource控件ID =ObjectDataSource1=服务器SelectMethod =GetById的TypeName =ATourDateRep>
        < SelectParameters>
            < ASP:参数名称=ID类型=的Int32/>
        < / SelectParameters>
    < / ASP:ObjectDataSource控件>< D​​IV CLASS =容器ID =TourDetail>        < ASP:直放站ID =RptTourDetail=服务器的DataSourceID =ODSTTitle的ItemType =游的EnableViewState =假OnItemDataBound =RptTourDetail_ItemDataBound>
            <&HeaderTemplate中GT;                < UL>
            < / HeaderTemplate中>
            <&ItemTemplate中GT;
                <立GT;
&所述; IMG SRC =&下;%#Item.TImgUrl%gt;中ALT =替代文本级=IMG响应/>
                    < D​​IV CLASS =行>
                        < D​​IV CLASS =COL-MD-3>
                            <% - NestedRepeater - %GT;
                            &所述p为H.;                                <%#Item.TourId%GT;                            &所述; / P>
                            < ASP:直放站的ItemType =TourDateID =RptTourNested=服务器的EnableViewState =假的DataSourceID =ObjectDataSource1>
                                <&ItemTemplate中GT;
                                    < H2>                                   <%#Item.TourStartDate%GT;
                                         < / H>
                                < / ItemTemplate中>
                            < / ASP:直放站>
                        < / DIV>
                        < D​​IV CLASS =COL-MD-6>
                            <% - 此列正常工作 - %GT;
                            < H4>
                                <%#Item.TName%GT;
                            < / H4>
                            &所述p为H.;
                                <%#Item.TDes%GT;
                            &所述; / P>
                        < / DIV>
                        < D​​IV CLASS =COL-MD-3> C< / DIV>
                    < / DIV>                < /李>            < / ItemTemplate中>            < FooterTemplate>
                < / UL>
            < / FooterTemplate>
        < / ASP:直放站>    < / DIV>


解决方案

  

有冲突变量的名称与控件的名称。尝试重命名


  ObjectDataSource控件ObjectDataSource1 =(ObjectDataSource控件)e.Item.FindControl(ObjectDataSource1);
ObjectDataSource1.SelectParameters [TourId] =默认值dataItem.TourId。


  


  ObjectDataSource控件objTourDataSource =(ObjectDataSource控件)e.Item.FindControl(ObjectDataSource1);
objTourDataSource.SelectParameters [TourId] =默认值dataItem.TourId。

I have a Nested repeater in my web form and I put two ObjectDataSource for each repeater.

I have this method in my repositiry:

 public IQueryable<TourDate> GetById(int Id)
{
    return model.TourDates.Where(e => e.TourId == Id);
}

I need to Set ItemDataBound event .

I write this code for ItemDataBound event:

 protected void RptTourDetail_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.AlternatingItem ||
    e.Item.ItemType == ListItemType.Item)
{
var dataItem = e.Item.DataItem;
ObjectDataSource ObjectDataSource1 = (ObjectDataSource)e.Item.FindControl("ObjectDataSource1");
    ObjectDataSource1.SelectParameters["TourId"].DefaultValue = dataItem.TourId;
 }


}

but it dosent recognize TourId at last line.I think something wrong is there with this

var dataItem = e.Item.DataItem;

does anyone have any idea whats the problem?

some explanation about projcet if needed:

here is my model

and html:

<asp:ObjectDataSource ID="ODSTTitle" runat="server" SelectMethod="GetById"     TypeName="ATourRep">
        <SelectParameters>
            <asp:QueryStringParameter DefaultValue="0" Name="Id"  QueryStringField="CID" Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"  SelectMethod="GetById" TypeName="ATourDateRep">
        <SelectParameters>
            <asp:Parameter Name="Id" Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>

<div class="container" id="TourDetail">

        <asp:Repeater ID="RptTourDetail" runat="server" DataSourceID="ODSTTitle" ItemType="Tour" EnableViewState="false" OnItemDataBound="RptTourDetail_ItemDataBound">
            <HeaderTemplate>

                <ul>
            </HeaderTemplate>
            <ItemTemplate>
                <li>


<img src="<%# Item.TImgUrl %>" alt="Alternate Text" class="img-responsive" />
                    <div class="row">


                        <div class="col-md-3">
                            <%-- NestedRepeater --%>
                            <p>

                                <%# Item.TourId %>

                            </p>
                            <asp:Repeater ItemType="TourDate" ID="RptTourNested" runat="server" EnableViewState="false" DataSourceID="ObjectDataSource1">
                                <ItemTemplate>
                                    <h2>

                                   <%# Item.TourStartDate %>
                                         </h2>
                                </ItemTemplate>
                            </asp:Repeater>
                        </div>


                        <div class="col-md-6">
                            <%-- This Column works correctly --%>
                            <h4>
                                <%# Item.TName %>
                            </h4>
                            <p>
                                <%# Item.TDes %>
                            </p>
                        </div>


                        <div class="col-md-3">c</div>
                    </div>

                </li>

            </ItemTemplate>

            <FooterTemplate>
                </ul>
            </FooterTemplate>
        </asp:Repeater>

    </div>

解决方案

There's conflict in variable's name with control's name. Try to Rename

    ObjectDataSource ObjectDataSource1 = (ObjectDataSource)e.Item.FindControl("ObjectDataSource1");
ObjectDataSource1.SelectParameters["TourId"].DefaultValue = dataItem.TourId;

To

    ObjectDataSource objTourDataSource= (ObjectDataSource)e.Item.FindControl("ObjectDataSource1");
objTourDataSource.SelectParameters["TourId"].DefaultValue = dataItem.TourId;

这篇关于在的ItemDataBound中继器嵌套的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆