如何在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事件上调用的
请帮帮我!!!
您需要做两件独立的事情:
- 设置中继器的源
- 告诉中继器如何处理源中的每个项目
要实现第一个,您只需要将中继器的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/