DataList 中绑定 DataList
外层DataList 是Datalis6,内层的DataList是dlSchoolCity<asp:DataList ID="DataList6" runat="server"onitemdatabound="DataList6_ItemDataBound">
<ItemTemplate>
<table border="2" cellpadding="0" cellspacing="0">
<tr>
<td style="letter-spacing: 1px;">
<div style="width:70px; height:2px"></div><a href="ProvinceSchoolIndex.aspx?id=<%# Eval("ct.pinfo.pid")%>"><%# Eval("ct.cname")%></a>
</td>
<td>
<table>
<tr>
<td>
<asp:DataList ID="dlSchoolCity" runat="server">
<ItemTemplate>
<a href="ProvinceSchoolIndex.aspx?id=<%# Eval("ct.id")%>"><%# Eval("ct.schoolName")%></a>
</ItemTemplate>
</asp:DataList>
</td>
</tr>
</table>
</td>
<td>更多</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
//绑定城市DataList6
protected void BindCity()
{
int id = Convert.ToInt32(Request.QueryString["id"]);
List<object> dataSource = new List<object>();
List<City> list = (List<City>)CityManager.GetCityByPid(id);
if (list.Count > 0 && list != null)
{
foreach (var item in list)
{
var city = new { ct=item};
dataSource.Add(city);
}
DataList6.DataSource = dataSource;
DataList6.DataBind();
}
}
protected void DataList6_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item||e.Item.ItemType == ListItemType.AlternatingItem)
{
DataList dataList = (DataList)e.Item.FindControl("dlSchoolCity");
DataRowView rowv = (DataRowView)e.Item.DataItem; //这里说数据类型不匹配(无法将类型为“<>f__AnonymousType9`1[bzxyw.Models.City]”的对象强制转换为类型“System.Data.DataRowView”。
)
int mainID = Convert.ToInt32(rowv["Id"]);
if(mainID > 0)
{
DataSet ds = SqlDataProvider.GetSubContent(mainID);//获取从数据。
if(ds != null)
{
try
{
dataList.DataSource = ds;
dataList.DataBind();
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}
} --------------------编程问答-------------------- 补充一下我把最下面那段改成这样还是不行,最主要是 上一个DataList中数据的id,无法获得。
protected void DataList6_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataList dataList = (DataList)e.Item.FindControl("dlSchoolCity");
List<object> dataSource = new List<object>();
List<Technical> list = (List<Technical>)TechnicalManager.GetAllTechnicalsById(1);
if (list.Count > 0 && list != null)
{
foreach (var item in list)
{
var city = new { ct = item };
dataSource.Add(city);
}
dataList.DataSource = dataSource;
dataList.DataBind();
}
} --------------------编程问答-------------------- 云南学校汇总
北京
云南师达商贸管理学校
云南旅游外国语学院
昆明博文经济技术学校
昆明市第一职业中专学校
更多
东城区
云南师达商贸管理学校
云南旅游外国语学院
昆明博文经济技术学校
昆明市第一职业中专学校
更多
西城区
云南师达商贸管理学校
云南旅游外国语学院
昆明博文经济技术学校
昆明市第一职业中专学校
更多
崇文区
云南师达商贸管理学校
云南旅游外国语学院
昆明博文经济技术学校
昆明市第一职业中专学校
更多
出来的结果是这样,真晕,好奇怪到达该怎么办急啊,高手些教教。
--------------------编程问答-------------------- 希望能成为这样可以吗?高手们。。。。。。。。。
东城区 东城区一中 东城区二中 东城区三中 更多
西城区 西城区一中 西城区二中 西城区三中 更多
表是这样的 省份表(pid,pname),城市表(Cid,cname) ,学校表(sid,sname,pinfo(省份外键),cinfo(城市外键)) --------------------编程问答-------------------- DataRowView rowv = (DataRowView)e.Item.DataItem; //这里说数据类型不匹配
=======================================
City rowv = (City)e.Item.DataItem;
=======================================
你绑定的不是用DataTable或DataSet --------------------编程问答-------------------- 指定:DataKeyFiled 属性,在后台获取DataKeys[e.Item.ItemIndex] 获取id进行绑定 --------------------编程问答-------------------- 你每个Datalist中都有
云南师达商贸管理学校
云南旅游外国语学院
昆明博文经济技术学校
你的数据读取的不对啊。
TechnicalManager.GetAllTechnicalsById(1); 看看你的SQL
--------------------编程问答-------------------- 原sql="select * from Technicals where city=@city"
可以理解为
sql="select * from school where Cinfo=1"
--------------------编程问答-------------------- 指定:DataKeyFiled 属性,在后台获取DataKeys[e.Item.ItemIndex] 获取id进行绑定怎么绑定?是不是Datalis6.datakeyFiled="";
求详细点,我是菜鸟不太明白。。。。。 --------------------编程问答-------------------- DataList6.DataKeys[Convert.ToInt32(e.Item.ItemIndex)];
索引超出范围。必须为非负值并小于集合大小。
参数名: index
--------------------编程问答--------------------
必须放在form中 --------------------编程问答-------------------- 晕了,绑定解决不了,只有用笨办法了,静态绑定。
云南 昆明博文经济技术学校 云南师达商贸管理学校 昆明市第一职业中专学校 曲靖一中
北京 云南旅游外国语学院 北京一中 北京二中 北京三中
红色的是静态字段,这样的结果我想哭。 --------------------编程问答--------------------
在前页面DataList属性里面设置DataKeyFiled,主键,
后台DataKeys[e.Item.ItemIndex]
补充:.NET技术 , ASP.NET