日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

repeater填充html,使用动态绑定到对象列表的ASP.NET Repeater创建HtmlTable

發(fā)布時(shí)間:2024/6/1 asp.net 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 repeater填充html,使用动态绑定到对象列表的ASP.NET Repeater创建HtmlTable 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我以編程方式在中繼器內(nèi)創(chuàng)建一個(gè)表。我的問題是,項(xiàng)目模板部分中的單元格無法正確呈現(xiàn)。它們?cè)诒砀駱?biāo)記后顯示為文本節(jié)點(diǎn)。有沒有人有關(guān)于如何正確獲取表格單元格的建議?

using System;

using System.Collections.Generic;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

namespace WebApplication1

{

public partial class WebForm2 : Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

var dogs = new List

{

new Dog { Name = "Rex", Breed = "Russell Terrier" },

new Dog { Name = "Fido", Breed = "Poodle" },

new Dog { Name = "Fetcher", Breed = "Golden Retriever" },

};

var repeater = new Repeater { ID = "Repeater1" };

repeater.DataSource = dogs;

repeater.DataBind();

AddHeader(repeater);

AddItems(repeater, dogs);

PlaceHolder1.Controls.Add(repeater);

}

}

private void AddHeader(Repeater repeater)

{

var repeaterItem = new RepeaterItem(0, ListItemType.Header);

var table = new HtmlTable();

var row = new HtmlTableRow();

var cell1 = new HtmlTableCell("th") { InnerText = "Name" };

var cell2 = new HtmlTableCell("th") { InnerText = "Breed" };

row.Cells.Add(cell1);

row.Cells.Add(cell2);

table.Rows.Add(row);

repeaterItem.Controls.Add(table);

repeater.Controls.Add(repeaterItem);

}

private void AddItems(Repeater repeater, List dogs)

{

for (var i = 0; i < repeater.Items.Count; i++)

{

var repeaterItem = new RepeaterItem(i + 1, ListItemType.Item);

var row = new HtmlTableRow();

var cell1 = new HtmlTableCell() { InnerText = dogs[i].Name };

var cell2 = new HtmlTableCell() { InnerText = dogs[i].Breed };

row.Cells.Add(cell1);

row.Cells.Add(cell2);

repeaterItem.Controls.Add(row);

repeater.Controls.Add(repeaterItem);

}

}

private sealed class Dog

{

public string Breed { get; set; }

public string Name { get; set; }

}

}

}更新:感謝Rob的幫助,我能夠使代碼工作。現(xiàn)在我有一個(gè)全功能的Repeater被完全加載到代碼隱藏的數(shù)據(jù)綁定中。太好了!

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using ExtensionMethods.WebControls;

namespace WebApplication1

{

public partial class WebForm1 : Page

{

protected void Page_Load(object sender, EventArgs e)

{

var dogs = new List

{

new Dog { Name = "Rex", Breed = "Russell Terrier" },

new Dog { Name = "Fido", Breed = "Poodle" },

new Dog { Name = "Fetcher", Breed = "Golden Retriever" },

};

var repeater = new Repeater

{

ID = "Repeater1",

HeaderTemplate = new CustomTemplate(ListItemType.Header),

ItemTemplate = new CustomTemplate(ListItemType.Item),

FooterTemplate = new CustomTemplate(ListItemType.Footer),

DataSource = dogs

};

repeater.DataBind();

PlaceHolder1.Controls.Add(repeater);

}

// Custom template class to add controls to the repeater's header, item and footer sections.

private sealed class CustomTemplate : ITemplate

{

private ListItemType ListItemType { get; set; }

public CustomTemplate(ListItemType type)

{

ListItemType = type;

}

public void InstantiateIn(Control container)

{

if (ListItemType == ListItemType.Header)

{

var table = new LiteralControl();

var head = new HtmlGenericControl("thead");

var row = new HtmlTableRow();

row.Cells.Add(new HtmlTableCell("th") { InnerText = "Breed" });

row.Cells.Add(new HtmlTableCell("th") { InnerText = "Name" });

head.Controls.Add(row);

table.Text = string.Format("

container.Controls.Add(table);

}

else if (ListItemType == ListItemType.Item)

{

var row = new HtmlTableRow();

var cell1 = new HtmlTableCell();

cell1.Controls.Add(new Literal { ID = "LiteralBreed" });

row.Cells.Add(cell1);

var cell2 = new HtmlTableCell();

cell2.Controls.Add(new Literal { ID = "LiteralName" });

row.Cells.Add(cell2);

container.Controls.Add(row);

container.DataBinding += new EventHandler(Container_DataBinding);

}

else if (ListItemType == ListItemType.Footer)

{

var footer = new LiteralControl("

");

container.Controls.Add(footer);

}

}

// Event handler to populate the dog's breed and name in the table when data-binding occurs.

private void Container_DataBinding(object sender, EventArgs e)

{

var item = sender as RepeaterItem;

if (item != null)

{

var dog = ((Dog)item.DataItem);

var breed = item.FindDescendantsByType().Single(x => x.ID == "LiteralBreed");

breed.Text = dog.Breed;

var name = item.FindDescendantsByType().Single(x => x.ID == "LiteralName");

name.Text = dog.Name;

}

}

}

private sealed class Dog

{

public string Breed { get; set; }

public string Name { get; set; }

}

}

}

總結(jié)

以上是生活随笔為你收集整理的repeater填充html,使用动态绑定到对象列表的ASP.NET Repeater创建HtmlTable的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。