当前位置:编程学习 > C#/ASP.NET >>

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 
--------------------编程问答--------------------
引用 9 楼 dlhao4 的回复:
DataList6.DataKeys[Convert.ToInt32(e.Item.ItemIndex)];
索引超出范围。必须为非负值并小于集合大小。
参数名: index


必须放在form中 --------------------编程问答-------------------- 晕了,绑定解决不了,只有用笨办法了,静态绑定。
云南  昆明博文经济技术学校 云南师达商贸管理学校 昆明市第一职业中专学校 曲靖一中
北京  云南旅游外国语学院 北京一中 北京二中 北京三中 
红色的是静态字段,这样的结果我想哭。 --------------------编程问答--------------------
引用 8 楼 dlhao4 的回复:
指定:DataKeyFiled 属性,在后台获取DataKeys[e.Item.ItemIndex] 获取id进行绑定怎么绑定?是不是Datalis6.datakeyFiled="";
求详细点,我是菜鸟不太明白。。。。。


在前页面DataList属性里面设置DataKeyFiled,主键,
后台DataKeys[e.Item.ItemIndex]
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,