如何在c#中绑定循环中的中继器

本文关键字:循环 中继器 绑定 | 更新日期: 2023-09-27 18:19:56

我在asp.net 中使用过中继器

 <div class="slider-inner">
<div id="daslider" runat="server" class="da-slider">
<asp:Repeater ID="rptSlider" runat="server">
    <ItemTemplate>
          <asp:Panel ID="sld" runat="server" class="da-slide">
            <h2><asp:Literal ID="lblTitle" runat="server"></asp:Literal></h2>
            <p>
               <asp:Literal ID="lblDescription" runat="server"></asp:Literal>
            </p>
            <div class="da-img">
                 <iframe id="framevid" runat="server" visible="false" width="530" height="300" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
                 <asp:Image ID="sldrimg" runat="server" CssClass="img-responsive"/>
            </div>
        </asp:Panel>
        </ItemTemplate>
     <FooterTemplate>
        <asp:Panel ID="btnlinks" runat="server" class="da-arrows">
            <span class="da-arrows-prev"></span>
            <span class="da-arrows-next"></span>
        </asp:Panel>
    </FooterTemplate>
    </asp:Repeater>
       </div>
       </div>     

在CS文件中,我想使用循环程序将它们绑定为代码行

private void GetMainAppSettings()
{ 
    MainSetting Item = context.FetchMainAppSettings();
    SliderContext contextSlider = new SliderContext();
    Slider SW = new Slider();
    string PageName = "Home Page";
    IEnumerable<_14Muslims.Domain.Entity.Slider> pType = contextSlider.SliderFetchAllEnabled(PageName);
    foreach (Slider item in pType)
    {
        lblTitle.Text = item.SliderTitle;
        lblDescription.Text = item.SliderDescription;
        framevid.Attributes.Add("src", item.SliderImage);
        sldr.Attributes.Add("src", item.SliderImage);
        daslider.Style.Add("background-image", WebUtility.UrlSchemeAuthority() + @"/FileStore/AppSettingsSiteLogos/" + item.BackgroundImage);
 }
 }

请注意,GetMainAppSettings()是在page_load事件上调用的

请帮帮我!!!

如何在c#中绑定循环中的中继器

您需要做两件独立的事情:

  1. 设置中继器的源
  2. 告诉中继器如何处理源中的每个项目

要实现第一个,您只需要将中继器的DataSource属性设置为需要显示的项目集合,并执行DataBind调用:

private void GetMainAppSettings()
{ 
    MainSetting Item = context.FetchMainAppSettings();
    SliderContext contextSlider = new SliderContext();
    Slider SW = new Slider();
    string PageName = "Home Page";
    IEnumerable<_14Muslims.Domain.Entity.Slider> pType = contextSlider.SliderFetchAllEnabled(PageName);
    rptSlider.DataSource(pType);
    rptSlider.DataBind();
}

完成后,中继器将循环浏览每个项目,对其进行处理,并显示所需的内容。为了自定义这个过程,repeated提供了一个ItemDataBound事件,您可以在其中设置模板应该如何查找特定项目:

protected void rptSlider_ItemDataBound(object sender, RepeaterItemEventArgs e) {
      // This event is raised for the header, the footer, separators, and items.
      // Execute the following logic for Items and Alternating Items.
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
        //get the item from the event arguments
        var item = (Slider)e.Item.DataItem;
        //get the controls
        var lblTitle = (Label)e.Item.FindControl("lblTitle");
        var lblDescription= (Label)e.Item.FindControl("lblDescription");
        var framevid= (HtmlGenericControl)e.Item.FindControl("framevid");
        var sldr= (HtmlGenericControl)e.Item.FindControl("sldr");
        //set the values
        lblTitle.Text = item.SliderTitle;
        lblDescription.Text = item.SliderDescription;
        framevid.Attributes.Add("src", item.SliderImage);
        sldr.Attributes.Add("src", item.SliderImage);
      }
   } 

这将为数据源中的每个项目执行一次,并且您可以完全控制内容的去向和方式。循环是由中继器本身为您隐式完成的。

无需在代码后面循环数据,您可以直接分配DataSource和Repeater控件来处理其余部分。

在Code-behind中,您可以用程序设置DataSource,如下所示:-

rptSlider.DataSource = pType;
rptSlider.DataBind();

在您的中继器控件中,您可以放置数据绑定器代码块,以将特定属性分配给控件,如下所示:-

<h2><asp:Literal ID="lblTitle" runat="server" Text='<%# SliderTitle%>'></asp:Literal></h2>

等等..用于其他控件。

绑定中继器为什么使用循环?您可以直接将对象"pType"分配给中继器数据源。像

 IEnumerable<_14Muslims.Domain.Entity.Slider> pType = contextSlider.SliderFetchAllEnabled(PageName);
 rptSlider.DataSource=pType;
 rptSlider.DataBind();

之后,您可以在.aspx页面上访问中继器中的所有字段。

更多详细信息,请参阅以下文章:http://www.c-sharpcorner.com/UploadFile/5089e0/how-to-use-repeater-control-in-Asp-Net/