哎,数据库查询绑定到datalist,对我来说超级难,想破了脑袋

scy251147 2008-11-20 08:09:47
有两个表,分别是Content表和Navigation表,图如下


其中,ct_Type和navigation表的ID具有外键约束的关系。
asp.net中我想实现的功能如下。如图所示:

就是想利用一个datalist控件,循环显示navigation中的每个元组(如上图所示),并且在content表中选择出ct_Type列与navigation中ID
号相等的添加到datalist1中显示,datalist1好像只支持一个数据库表的绑定,查找两个不行吧,我想利用视图来提取,感觉不是太简单,有没有高手指教一下
...全文
221 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pig23 2008-11-21
  • 打赏
  • 举报
回复
简单的控件嵌套,看个例子吧:

前台:
        <asp:Repeater ID="rpMenu" runat="server">
<ItemTemplate>
<div>
<div class="menuname"><%# Eval("Navigation") %></div>
<asp:Repeater ID="rpContent" runat="server" DataSource='<%# GetData( Eval("ID")) %>'>
<ItemTemplate>
<a href='...'><%# Eval("ct_Title") %></a>
</ItemTemplate>
</asp:Repeater>
</div>
</ItemTemplate>
</asp:Repeater>


后台的GetData函数为:
    protected DataTable GetData(object obj)
{
DataTable dt = 根据主分类进行查询,并返回datatable的方法(obj);
return dt;
}


之后外层repeater正常绑定,内层用GetData绑定,datalist一样
Iyun_1227 2008-11-21
  • 打赏
  • 举报
回复
DataList 套 DataList
hanqingyu 2008-11-21
  • 打赏
  • 举报
回复
学习新知识
scy251147 2008-11-21
  • 打赏
  • 举报
回复
up
zzc2006 2008-11-20
  • 打赏
  • 举报
回复
datalist绑定一个dataset,dataset是支持多表连接的,dataset.tables.add()将两个table加进去,在增加一个关系连接,例如
dataset ds=new dataset();
ds.Relations.Add("relationMain", ds.Tables[0].Columns["oddments_no"], ds.Tables[1].Columns["oddments_no"]);
然后datalist.datasouce=ds;datalist.databind()就OK了。
不知道楼主是不是要达到这个目的
net_xiaojian 2008-11-20
  • 打赏
  • 举报
回复
如果你第一个里面的栏目是规定好的(页面上也div栏目布局),那么你只要查询第二个的所有数据就行了,我这里的做法不用控件,直接输出html标签。

本站首页(ID=1) 娱乐新闻(ID=4)
... ...

国内新闻(ID=2) 体育新闻(ID=7)
... ...


可以通过从数据库里面读出来的Dataset或者IList<model>,然后做一个循环判断,随手写下吧。
protected void ResponseHtml(string sId)
{
Model_Test ms = new Model_Test();
IList<Model_Test> list = "数据库里面读到的List";
for(int i = 0; i < list.count; i++)
{
if(sId == ms.ct_Type)
{
//this code response html.
//...
}
}
}

将这个方法写在栏目(div)里。
比如:

<div>本站首页</div>
<div id='1'><%ResponseHtml(this.id) %></div>



我觉得这种方式比较好,如果用datalist控件的话,应该只能是嵌套吧。
scy251147 2008-11-20
  • 打赏
  • 举报
回复
但是项目需要这个功能,没办法,
哥本哈士奇 2008-11-20
  • 打赏
  • 举报
回复
另外你说的这个repeater可以,设置列数为2,然后自定义里面的内容,每一个是一个你的列表就可以了.
但话还是说回来,不太建议这么设计.
哥本哈士奇 2008-11-20
  • 打赏
  • 举报
回复
建议你还是不要这么设计.
通常做网站的时候新增板块也是要自己布局的,这种自动生成的方式很死板,实际上后期可能会有的很少.csdn主页你看下就知道了.
scy251147 2008-11-20
  • 打赏
  • 举报
回复
有没有高手做过这样的,来帮帮我呀,我真的没办法了
scy251147 2008-11-20
  • 打赏
  • 举报
回复
up下,
scy251147 2008-11-20
  • 打赏
  • 举报
回复
恩,利用一个datalist1,设置其项模板,然后设置repeatClomun为2 ,这个已经实现了,主要是根据navigation变中的navigation列,把Content中与之对应的内容给添加进去
scy251147 2008-11-20
  • 打赏
  • 举报
回复
这样做的主要原因是当在后再增加或者删除一些栏目的时候,比如说是国内新闻,相应的新闻板块会随之增加减少,而不需要改代码
brooklyng60 2008-11-20
  • 打赏
  • 举报
回复
就嵌套了,要不然拼个表格出来太浪费时间,麻烦,也没必要了
先设置DATALIST的ReaperClomun为2,然后根据TYPEID拼出那样的样式
scy251147 2008-11-20
  • 打赏
  • 举报
回复
不是,我只是用了一个datalist控件,想循环绑定数据库中的项
哥本哈士奇 2008-11-20
  • 打赏
  • 举报
回复
还是没看懂楼主的意思,你在每个栏目里单独放一个datalist一共四个,然后绑定其相关的数据源,不知道是不是这个意思.
哥本哈士奇 2008-11-20
  • 打赏
  • 举报
回复
hi,你的ct_type就是类别字段吧,根据这个字段作为where查询条件就可以了啊.
scy251147 2008-11-20
  • 打赏
  • 举报
回复
up下先,呵呵··~~~对了,第一个图是Navigation表,第二个图是Content表

62,268

社区成员

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

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

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

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