如何动态添加DataList?

波特王子 2010-05-24 05:52:49
我需要在页面上显示n块内容(块数不定,每一块都存成了一个DataTable,整个存成一个DataSet),每一块内容都用一个DataList去显示出来。我需要根据动态获取的块数n,往页面中添加n个DataList,并设定它的ItemTemplate,请问怎么实现?最好给一个列子,谢谢~
...全文
442 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
jshi123 2010-05-26
  • 打赏
  • 举报
回复

<asp:DataList ID="DataList1" runat="server">
<ItemTemplate>
<asp:GridView ID="GridView1" runat="server" DataSource='<%# Container.DataItem %>'>
</asp:GridView>
</ItemTemplate>
</asp:DataList>

后台:

protected void Page_Load(object sender, EventArgs e)
{
// 填充dataset
DataSet ds = new DataSet();
// ...

DataList1.DataSource = ds.Tables;
DataList1.DataBind();
}
zhoulingsmile 2010-05-26
  • 打赏
  • 举报
回复
帮你顶哈。。。加油咯
tashiwoweiyi 2010-05-26
  • 打赏
  • 举报
回复
KFCILIKEIT 2010-05-26
  • 打赏
  • 举报
回复
学习中~~~~
波特王子 2010-05-26
  • 打赏
  • 举报
回复
我要的效果是动态生成DataList,不要静态地放入到Html中呀
[Quote=引用 14 楼 jshi123 的回复:]
HTML code

<asp:DataList ID="DataList1" runat="server">
<ItemTemplate>
<asp:GridView ID="GridView1" runat="server" DataSource='<%# Container.DataItem %>'>
</asp:GridView>
</ItemTemplate>……
[/Quote]
波特王子 2010-05-26
  • 打赏
  • 举报
回复
我的意思是,在页面是之前已经有很多东西了,我想把动态生成的Datalist嵌入到某个合适的位置(最好是<table>的某个<tr><td></td></tr>的标签处)

[Quote=引用 12 楼 wxr0323 的回复:]
在哪个页面调用就在哪个页面来运行呗!
[/Quote]
波特王子 2010-05-25
  • 打赏
  • 举报
回复
太谢谢了~再请教一下,请问有动态添加DataList的示例程序吗,谢谢~

[Quote=引用 7 楼 wosizy 的回复:]
C# code

DataList动态添加模版,首先建立两个模版,例a.ascx,b.ascx
a.ascx内容:

<%@ Language = "C#" %>

<%# "<b>" +
DataBinder.Eval(((DataListItem)Container).DataItem, "LastName") +
"</b>, " +
Data……
[/Quote]
波特王子 2010-05-25
  • 打赏
  • 举报
回复
太感谢了,我正是不太清楚动态添加DataList的该怎么做。可以给一个完整的简单例子吗,谢谢了~
[Quote=引用 5 楼 wuyq11 的回复:]
动态添加DataList
DataList list = new DataList();
list.ItemTemplate = Page.LoadTemplate("A.ascx");
list.ItemDataBound += new DataListItemEventHandler(list_ItemDataBound);
list.DataSource = dt;
list.Da……
[/Quote]
wosizy 2010-05-25
  • 打赏
  • 举报
回复

DataList动态添加模版,首先建立两个模版,例a.ascx,b.ascx
a.ascx内容:

<%@ Language = "C#" %>

<%# "<b>" +
DataBinder.Eval(((DataListItem)Container).DataItem, "LastName") +
"</b>, " +
DataBinder.Eval(((DataListItem)Container).DataItem, "FirstName")
%>

b.ascx


<%# "<b>" +
DataBinder.Eval(((DataListItem)Container).DataItem, "FirstName") +
"</b>, " +
DataBinder.Eval(((DataListItem)Container).DataItem, "LastName")
%>

在Default.aspx中有
<asp:DataList run="server" id="Show"></asp:DataList>
在Default.aspx.cs中
protected void Page_Load(object sender,EventArgs e)
{
this.Show.ItemTemplate = Page.LoadTemplate("a.ascx");
}
这样调用就可!

波特王子 2010-05-25
  • 打赏
  • 举报
回复
谢谢了,这个对我很有用,特别是动态加载模板
[Quote=引用 3 楼 qq865926998 的回复:]
http://topic.csdn.net/t/20040705/18/3147772.html

http://www.niuc.net/post/6013/

http://www.niuc.net/page/1/359/
[/Quote]
peacehp 2010-05-25
  • 打赏
  • 举报
回复
学习······
子夜__ 2010-05-25
  • 打赏
  • 举报
回复
在哪个页面调用就在哪个页面来运行呗!
波特王子 2010-05-25
  • 打赏
  • 举报
回复
写了一个示例程序能够动态添加DataList了,但是不能在我想要的页面部位显示数据:

public void CreatDataList() {
DataList dataList = new DataList();
dataList.ItemTemplate = Page.LoadTemplate("datalistTemplate.ascx");
dataList.DataSource = GetDataTable();
dataList.DataBind();
this.Controls.Add(dataList);
}

protected DataTable GetDataTable() {
DataTable dt = new DataTable("table");
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("score", typeof(float));
for (int j = 0; j < 5; j++)
{
DataRow dr = dt.NewRow();
dr[0] = "aaa" + j;
dr[1] = j;
dr[2] = 100 - j;
dt.Rows.Add(dr);
}
return dt;
}
protected void Page_Load(object sender, EventArgs e)
{
CreatDataList();
}

datalistTemplate.ascx:
<%@ Control Language="C#" %>
<%# "ID:" + DataBinder.Eval(((DataListItem)Container).DataItem, "id") + "   "
+ "姓名:" + DataBinder.Eval(((DataListItem)Container).DataItem, "name") + "   "
+ "成绩:" + DataBinder.Eval(((DataListItem)Container).DataItem, "score") + "<br>"
%>


[Quote=引用 5 楼 wuyq11 的回复:]
动态添加DataList
DataList list = new DataList();
list.ItemTemplate = Page.LoadTemplate("A.ascx");
list.ItemDataBound += new DataListItemEventHandler(list_ItemDataBound);
list.DataSource = dt;
list.Da……
[/Quote]
长腿爸爸 2010-05-25
  • 打赏
  • 举报
回复

protected void DataBindlist()
{
SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["SQLCONNECTION"].ToString());
SqlDataAdapter ad = new SqlDataAdapter("select * from About", con);
DataSet ds = new DataSet();
ad.Fill(ds, pagelist.PageSize * (pagelist.CurrentPageIndex - 1), pagelist.PageSize, "About");
list.DataSource = ds.Tables["About"];
list.DataBind();
}



带分页的DataList

DataList Pager 分页控件

wuyq11 2010-05-24
  • 打赏
  • 举报
回复
动态添加DataList
DataList list = new DataList();
list.ItemTemplate = Page.LoadTemplate("A.ascx");
list.ItemDataBound += new DataListItemEventHandler(list_ItemDataBound);
list.DataSource = dt;
list.DataBind();

void list_ItemDataBound(object sender, DataListItemEventArgs e)
{
Control ctrl = e.Item.Controls[0];
Label lbl = (Label)ctrl.FindControl("lbl");
lbl.Text = DataBinder.Eval(e.Item.DataItem, "name").ToString();
}

class MyTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
Literal lbl = new Literal();
lbl.DataBinding += new EventHandler(lbl_DataBinding);
container.Controls.Add(lbl);
}
private void lbl_DataBinding(object sender, EventArgs e)
{
Literal lbl = (Literal)sender;
lbl.Text = "<a href=\"" + DataBinder.Eval(((DataListItem)lbl.NamingContainer).DataItem, "Link").ToString() + "\">" + DataBinder.Eval(((DataListItem)lbl.NamingContainer).DataItem, "Name").ToString() + "</a>";
}
datalist.ItemTemplate = new MyTemplate();
hhxx_cj 2010-05-24
  • 打赏
  • 举报
回复
那你把你要获取的数据表和你的DataList对应上,用下标进行对应绑定不就行了

这没好像没什么麻烦吧,只有是有规率的就行了,你可以试试呀,查到一个数据表,就添加到DataSet中,
ds.Tables.Add(string tablename,Table)
QQ865926998 2010-05-24
  • 打赏
  • 举报
回复

private DataSet GetDataSet(string sql)
{
string constring = System.Configuration.ConfigurationSettings.AppSettings["conn"];
SqlDataAdapter sda = new SqlDataAdapter(sql, constring);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds;
}

harderLi 2010-05-24
  • 打赏
  • 举报
回复
做一个用户控件

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧