最近公司要做一个客户展示系统:(类似调查问卷,并生成统计图)涉及到了DataList嵌套DataList的问题,现在把自己的心得公布希望多多交流并且也在寻找更加简单合适的方法!
用DataList嵌套DataList的意义 无非是想构造 类似树型结构的展示功能(N大主题包括N小主题,每个大主题内嵌小主题)
比如我这次的项目是一个调查项目:要求结果是:
你喝过咖啡吗?
|
||||
你喜欢喝咖啡吗?
|
||||
您的月薪?
|
||||
您的学历?
|
其中红色内容是题目,绿色内容是回答内容,由于数据库设计时候一定会把问题和答案分开,且一个问题多个答案选择(一对多关系),所以问题和答案
会在不同的表内且用一条语句无法实现按照此结构的顺序结构(也就是用一个DataList无法完成最终的样式).
那么我们便会用嵌套方法,既红色部分为父DataList绿色部分为子DataList互相不干扰.
前台代码:
<%@ Import Namespace="System.Data" %>
<asp:DataList ID="Parent" runat="server" Height="134px" Width="133px" OnInit="Parent_Init">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text= <%# Eval("QuestionContent") %> Font-Bold="True" ForeColor="Red"></asp:Label>
<asp:DataList ID="Child" runat="server" datasource= <%# ((DataRowView)Container.DataItem).Row.GetChildRows("Myrelations") %> ForeColor="Green">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text= <%# DataBinder.Eval(Container.DataItem, "[\"AnswerContent\"]")%> ></asp:Label>
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>
注意:代码绿色部分分别为这个项目 问题的绑定与选择答案的绑定.
代码红色部分为子DataList的数据源绑定 "Myrelations"为问题与选择答案表的关系名称(关于这个关系名称的由来下面的代码中将介绍)
后台代码:
String connStr = ConfigurationManager.ConnectionStrings["ResearchProjectConnectionString"].ConnectionString; //读取WEB.CONFIG连接字符串
SqlConnection conn = new SqlConnection(connStr);
SqlDataAdapter SqlDa1 = new SqlDataAdapter("select * from Question", conn); //遍历问题表
SqlDataAdapter SqlDa2 = new SqlDataAdapter("select * from Answer", conn);//遍历回答表
DataSet ds = new DataSet();
SqlDa1.Fill(ds,"Question");
SqlDa2.Fill(ds,"Answer");
ds.Relations.Add("Myrelations", ds.Tables["Question"].Columns["QuestionOrder"], ds.Tables["Answer"].Columns["QuestionOrder"]); //为两个表建立关联
Parent.DataSource = ds.Tables["Question"];//父DataList绑定源
Page.DataBind();//绑定
conn.Close();
注意:关于关联的那行代码的意思就如同 SQL语句里面的 INNER JOIN 查询 就是把两个表通过QuestionOrder 连接起来
在Question表里的QuestionOrder 与Answer表里的QuestionOrder一定要一一对应且是一对多关系就可以让后者内容自动去排列在前者的相关内容后面就构成了上面最终的效果.
(上帝刚才骂了我,说我没说清楚,那好把现在就给你们举例说明一下!阿门!)
Question表里的QuestionOrder 假如有四种值
石家庄网站建设的优点:我们是专属定制,制作符合您公司业务、风格的网站,这就做到给您制作的网站是网络上独一无二的网站,这样更有利于搜索引擎的收录。如果您喜欢网络上某个风格的网站或者网站模板,我们是只仿制而不直接套用,我们会对其中的结构和样式做增减优化,做…
竞价排名营销是一种通过 竞价购买搜索引擎中关键词或关键短语的广告方式。竞价排名营销分为两种类型。 第一种,直接为真正的搜索引擎结果的排名付费,也就是说付的钱越多,网页所获得的排名名也就越高。 第二种则更类似于普通的广告。这种竞价排名营销方式通过…
网站优化对网站来说是非常重要的,直接决定和影响着网站所起到的作用,以及在各个地方当中的排名。在进行seo优化的过程中,我们必须要坚持一定的原则,真正的把这些事情做得更好,才可以确保最终的结果,这对于我们来说是非常重要的事。 SEO优化主要分为8小步: …