它可能看起来很奇怪,或者我可能没有注意到我的错误,但是在代码后面编写,我看不到第二个ListView的ID。
使用ASP.NET WebForms网站
这是我的.aspx代码
<div class="slideshow">
<asp:ListView runat="server" ID="lvCarousel" OnItemDataBound="lvCarousel_ItemDataBound" DataKeyNames="brand_id">
<LayoutTemplate>
<ul class="popup-slide">
<li runat="server" id="itemPlaceholder"></li>
</ul>
</LayoutTemplate>
<ItemTemplate>
<li class="popup-slideshow content-scroll ">
<figure class="ipad-scroll">
<figcaption>
<div class="popup-slider">
<div id="carousel1" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carousel2" data-slide-to="0" class="active"></li>
<li data-target="#carousel2" data-slide-to="1"></li>
<li data-target="#carousel2" data-slide-to="2"></li>
<asp:ListView runat="server" ID="lvCarouselPic" OnItemDataBound="lvCarouselPic_ItemDataBound" DataKeyNames="brand_id">
<LayoutTemplate>
<div class="carousel-inner">
<div class="item active">
<li runat="server" id="itemPlaceholder"></li>
</div>
</div>
</LayoutTemplate>
<ItemTemplate>
<asp:Image runat="server" ID="imgSlideShow" ImageUrl="#" />
</ItemTemplate>
</asp:ListView>
</ol>
</div>
</div>
</figcaption>
</figure>
</li>
</ItemTemplate>
</asp:ListView>
<nav class="popup-navigation"><span class="icon nav-prev"></span><span class="icon nav-next"></span><span class="icon nav-close"></span></nav>
</div>
这是我的C#代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DisplayCarousel();
}
}
protected void DisplayCarousel()
{
using (Entities db = new Entities())
{
List<Brand> brand = db.Brands.ToList();
lvCarousel.DataSource = brand.OrderByDescending(b => b.date_created);
lvCarousel.DataBind();
}
}
}
每当我尝试在C#中输入lvCarouselPic
时,它都不会出现。
我的问题还在于,一个品牌可以有很多照片,在这个幻灯片放映里面,我想用carousel-indicators
显示每个品牌对应的所有照片。如果你曾经做过这样的事情并且可以提供帮助,那将非常感激!
感谢
答案 0 :(得分:0)
您需要在绑定后遍历每个项目并执行FindControl("id")
并转换为ListView
对象。然后,您可以绑定数据源。
以下是一些示例代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DisplayCarousel();
}
}
protected void DisplayCarousel()
{
using (Entities db = new Entities())
{
// get all your data first
var DataList = db.Brands
.Select(a => new
{
objBrand = a,
PicList = a.Pics.ToList()
})
.OrderByDescending(a => a.objBrand.date_created)
.ToList();
// now bind the main listview to the Brand objects in the DataList
lvCarousel.DataSource = Brands.Select(a => a.objBrand);
lvCarousel.DataBind();
foreach (ListViewItem objItem in lvCarousel.Items)
{
// get the data object
var objData = DataList[objItem.DataItemIndex];
// find the nested list view
ListView lvCarouselPic = (ListView)objItem.FindControl("lvCarouselPic");
// bind the data pics data source
lvCarouselPic.DataSource = objData.PicList;
lvCarouselPic.DataBind();
// loop each pic item
foreach (ListViewItem objNestedItem in lvCarouselPic.Items)
{
// get the pic object
var objBrandPic = objData.PicList[objNestedItem.DataItemIndex];
// do whatever you need with the pic data, find controls in the nested listview, etc.
}
}
}
}
现在这个代码有一些东西。首先,我会将AnonymousType(var)作为自定义对象。然后我将我的数据库调用移动到外部类并调用该类并返回数据。
我确定你可以在OnItemCreated中进行嵌套数据绑定,但我绝不会这样做。
此外,您可以绑定前端html上的对象的数据(我没有在您的示例代码中看到任何内容)。例如:
<asp:Image runat="server" ID="imgSlideShow" ImageUrl='<%# Eval("FieldFromDatabase") %>' />
希望能让你朝着正确的方向前进。