小山

付出最大努力,追求最高成就,享受最佳生活,收获无悔人生

博客园 首页 新随笔 联系 订阅 管理
  10 Posts :: 0 Stories :: 1279 Comments :: 76 Trackbacks

1.html代码
<HTML>
    
<HEAD>
        
<title>NestedDataLists</title>
        
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        
<meta name="CODE_LANGUAGE" Content="C#">
        
<meta name="vs_defaultClientScript" content="JavaScript">
        
<meta name="vs_targetSchema" content="http://singlepine.cnblogs.com/">
    
</HEAD>
    
<body MS_POSITIONING="GridLayout">
        
<form id="Form1" method="post" runat="server">
            
<asp:DataList runat="server" Id="dlCategories" GridLines="Both" Bordercolor="black" cellpadding="3"
                cellspacing
="0" Headerstyle-BackColor="#DDDDDD" Headerstyle-Forecolor="#777777" Headerstyle-Font-Name="Arial"
                Headerstyle-Font-Size
="14" Headerstyle-Font-Bold="true" Font-Name="Arial" Font-Bold="true"
                Font-Italic
="true" Font-Size="11" ForeColor="Red" RepeatColumns="1">
                
<HeaderTemplate>
                    省市 & 市区
                
</HeaderTemplate>
                
<ItemTemplate>
                    
<%# DataBinder.Eval(Container, "DataItem.province"%>
                    
<br>
                    
<asp:DataList runat="server" Id="ChildDataList" GridLines="None" Bordercolor="black" cellpadding="3" cellspacing="0" Headerstyle-BackColor="#8080C0" Headerstyle-Font-Name="Arial" Headerstyle-Font-Size="8" Font-Name="Arial" Font-Size="8" datasource='<%# DataBinder.Eval(Container, "DataItem.myrelation") %>' RepeatColumns="5">
                        
<ItemTemplate>
                            
&nbsp; &nbsp;
                            
<%# DataBinder.Eval(Container, "DataItem.city"%>
                        
</ItemTemplate>
                    
</asp:DataList>
                
</ItemTemplate>
            
</asp:DataList>
        
</form>
    
</body>
</HTML>
2.cs代码
public class NestedDataLists : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.DataList dlCategories;
    
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
string constring=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
            
            DataSet ds
=new DataSet();
            
string sql1="select * from province";
            SqlDataAdapter    sda1 
=new SqlDataAdapter(sql1,constring);
            sda1.Fill(ds,
"province");

            
string sql2="select * from city";
            SqlDataAdapter    sda2 
=new SqlDataAdapter(sql2,constring);
            sda2.Fill(ds,
"city");
            
            ds.Relations.Add(
"myrelation", ds.Tables["province"].Columns["provinceID"], ds.Tables["city"].Columns["father"]);
            dlCategories.DataSource
=ds.Tables["province"].DefaultView;
            dlCategories.DataBind();
        }

        
        
Web Form Designer generated code
    }
3.演示数据库/Files/singlepine/area1.rar
posted on 2006-04-03 20:54 小山 阅读(7096) 评论(13) 编辑 收藏

Feedback

你这个写的好像有一个小问题:
如果我只想显示那指的省,就会出现问题
string sql1="select * from province"; 在这里加上where 条件语句 provinceid=N
这样这句就会报错,ds.Relations.Add("myrelation", ds.Tables["province"].Columns["provinceID"], ds.Tables["city"].Columns["father"]);

异常详细信息: System.ArgumentException: 不能启用此约束,因为不是所有的值都具有相应的父值。


 回复 引用   

#2楼 2006-04-14 22:22 多谢[未注册用户]
多谢
 回复 引用   

#3楼 2006-07-19 15:43 welldone[未注册用户]
小山你好, 我在使用DataList嵌套时候,里面哪个DataList的这样设置的
<asp:DataList ID="ExProList" DataKeyField="ProductID" runat="server" DataSource='<%GetExProDataSouse(Convert.ToInt32(DataBinder.Eval(Container.DataItem, "ExID")))%>' >
<ItemTemplate>


但是编译时候却提示 : 不能以声明的方式设置“DataSource”属性
我的环境是 Vs2005+Sqlserver2005 ,
在网上看到不少这样的用法,别人的可以,我的出错在哪里?

 回复 引用   

#4楼 2006-07-19 15:50 welldone[未注册用户]
小山你好, 我在使用DataList嵌套时候,里面哪个DataList的这样设置的
<asp:DataList ID="ExProList" DataKeyField="ProductID" runat="server" DataSource='<%GetExProDataSouse(Convert.ToInt32(DataBinder.Eval(Container.DataItem, "ExID")))%>' >
<ItemTemplate>


但是编译时候却提示 : 不能以声明的方式设置“DataSource”属性
我的环境是 Vs2005+Sqlserver2005 ,
在网上看到不少这样的用法,别人的可以,我的出错在哪里?

 回复 引用   

<%GetExProDataSouse(Convert.ToInt32(DataBinder.Eval(Container.DataItem, "ExID")))%>

少了一个 # :

正确的应该是 :

<%# GetExProDataSouse(Convert.ToInt32(DataBinder.Eval(Container.DataItem, "ExID"))) %>

 回复 引用   

#6楼 2006-12-30 11:52 古天[未注册用户]
只要把DataSource='当中的单引号去掉就可以了
 回复 引用   




























































































































 回复 引用   

高手高手啊
天天感谢您!!!!!


我拜你为师吧!!!!!
高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手高手

 回复 引用   

小山兄.我照你做的,做出来了,但是出现一个问题:
我想取每个类别的前12条记录,但是只能取第一个大类的12条,其他的则不能取.
怎么样才能解决这样的问题.
再次谢谢了!!

//填充一级分类表,只获取1-4这四个值
string sql1 = "select * from classfirst where fclass_id Between 1 and 4";
SqlDataAdapter sda1 = new SqlDataAdapter(sql1, conn);
sda1.Fill(ds, "classfirst");

//填充二级分类表,获取对应的四个值
string sql2 = "select top 12 * from product where sort1 Between 1 and 4 order by views";
SqlDataAdapter sda2 = new SqlDataAdapter(sql2, conn);
sda2.Fill(ds, "product");

//绑定主从关系
ds.Relations.Add("myrelation", ds.Tables["classfirst"].Columns["fclass_id"], ds.Tables["product"].Columns["sort1"]);
//绑定DataList1的数据源
DataList1.DataSource = ds.Tables["classfirst"].DefaultView;
DataList1.DataBind();

 回复 引用   

#10楼 2007-10-04 10:15 lltse[未注册用户]
我想在这种情况下实现分页,请赐教!
 回复 引用   

#11楼 2008-11-25 16:18 fghgf[未注册用户]
@多谢

 回复 引用