下午快下班的时候想到这个,跟z和q说了一下,也不知他们听懂没我说的什么意思。回来测试,居然成功了 :)
倒是先被ItemTemplate卡住了,动态创建的DataList,哪来ItemTemplate呢?还好用Item.Controls.Add搞定。
准备用在静态化上,DataGrid/DataList/Repeater都可以用这样的方式使用。省时省力结构还清晰,越来越喜欢DataBind了——这句话至开始使用.NET已经说了很多次了哦——只可惜我那本来就不熟练的写算法写循环控制,又要更加退化了。
理论上(还没有仔细思考,做出来这个就懒了,先不想思考问题了),还可以用来实现N级的DataList嵌套吧。
1
private void CreateDataList()
2
{
3
sql = "SELECT Build_Id, Name FROM House_Build";
4
dt = new DataTable();
5
da = new SqlDataAdapter(sql, conn);
6
da.Fill(dt);
7
da.Dispose();
8
9
DataList dl = new DataList();
10
dl.RepeatColumns = 3;
11
dl.RepeatLayout = RepeatLayout.Table;
12
dl.DataSource = dt;
13
dl.ItemDataBound += new DataListItemEventHandler(this.BindDataList);
14
dl.DataBind();
15
dt.Dispose();
16
17![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
string strHtml;
19
System.IO.StringWriter sw = new System.IO.StringWriter();
20
HtmlTextWriter htw = new HtmlTextWriter(sw);
21
dl.RenderControl(htw);
22
strHtml = sw.ToString();
23
Response.Write(strHtml);
24
}
25![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
protected void BindDataList(object sender, DataListItemEventArgs e)
28
{
29
if (e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
30
{
31
DataRowView thisRow = (DataRowView) e.Item.DataItem;
32![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
if (thisRow!=null)
34
{
35
Literal lit = new Literal();
36
lit.Text = string.Format("<div>{0}</div>\n<p>{1}</p>", thisRow["Build_Id"], thisRow["Name"]);
37
e.Item.Controls.Add(lit);
38
}
39
}
40
} /* ReCreate */
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)