.net中DataList嵌套DataList 的问题。。。

现在在做一个登记系统。需要实现的是一个问题对应它的所有的选项-------------------------------------------------------... 现在在做一个登记系统。需要实现的是一个问题 对应 它的所有的选项
-------------------------------------------------------------------
要实现的效果是这样的:
--------------------------------------------
A.您的职位级别(仅选择一项)(单选)
101.高级管理人员 103.低级管理人员
102.中级管理人员
B.您的兴趣爱好是什么(可多选)(多选)
201.篮球 203.看书
202.音乐 204.上网
--------------------------------------
因为两张表有关系。所以就弄了一个dataList 嵌套两个 Datalist 一个DataList 是放的单选按钮 一个DataList 是放的复选框。
---------------------------------------
这是我的代码
public void DataSecondBinds()//题目选项绑定
{
foreach (DataListItem dli in DataList1.Items)
{
HiddenField QFirstName = dli.FindControl("HiddenField1") as HiddenField;//这是隐藏控件绑定的是题目的名称
List<FirstQ1> lstfirst = manager.ApplySelectFirstQ1();//这个是找出所有题目
for (int i = 0; i <lstfirst.Count; i++)
{
if (lstfirst[i].IsMany == 1)//判断是否为多选(1 是多选 ,0 单选 )
{
如果为多选 就找到DataList1 里面的DataList2(里面放的是复选框)
DataList dlSecond = dli.FindControl("DataList2") as DataList;
dlSecond.DataSource = manager.ApplySelectSecondQ2ByFirstQ1(QFirstName.Value);
dlSecond.DataBind();
}
else 如果为单选 里面放的是单选按钮
{
DataList dlThird = dli.FindControl("DataList3") as DataList;
dlThird.DataSource = manager.ApplySelectSecondQ2ByFirstQ1(QFirstName.Value);
dlThird.DataBind();
}
}
}
}
-----------------------------------
可是这样出来的效果 是:
A.您的职位级别(仅选择一项) (其中上面三个是复选框,下面三个是单选)
101.高级管理人员
102.中级管理人员
103.低级管理人员
101.高级管理人员
102.中级管理人员
103.低级管理人员
每个循环出来的都是这样。都是一道题目 答案 循环两次 而且 前一次是复选框 后一次是单选
-------------------------
我调试了好几遍。本来是只有十二条数据的。可是等循环到十二个的时候 还继续重新 循环 从0重新开始循环再循环到十二/ 不知道是我的循环写错了。还是什么原因。。。
---------------------------
还有就是 我出不来那种想要的效果 。只能一直往下排。/不能分成两列 如果是分成两列 的话 如果只有三个答案 那就是左边两个 右边一个。如果是四个答案 那就是左右两边一样 多/ 我搞不定啊。。。。。。
-----------------------------
希望大家尽量帮帮我啊。。。。。。
小女先谢谢了啊...........
两个问题都要搞定。搞定了 追加分。。。。。
不嵌套 怎么做。我做的 是一个问题对应 它的问题的所有选项。要根据 它的问题找出所对应的 问题选项啊。dlSecond和dlThird的数据源是一样的。但是我已经做判断了。不过这个问题已经搞定了。
---------------------------------------
现在关键是怎么排版。
我出不来那种想要的效果 。只能一直往下排。/不能分成两列 如果是分成两列 的话 如果只有三个答案 那就是左边两个 右边一个。如果是四个答案 那就是左右两边一样 多

我出来效果是这样的:
----------------------------------
A.您的职位级别(仅选择一项)
101.高级管理人员
102.中级管理人员
103.低级管理人员
------------------------------------
我想要的效果是:
----------------------------------

A.您的职位级别(仅选择一项)
101.高级管理人员 103.低级管理人员
102.中级管理人员
展开
 我来答
百度网友3096cbde2
2009-04-28 · TA获得超过323个赞
知道小有建树答主
回答量:337
采纳率:0%
帮助的人:296万
展开全部
你循环中这两个dlSecond和dlThird的数据源都一模一样,当然有错了
判断是否为多选可以在数据源那判断
dlSecond.DataSource = manager.ApplySelectSecondQ2ByFirstQ1(QFirstName.Value);
dlThird.DataSource = manager.ApplySelectSecondQ2ByFirstQ1(QFirstName.Value);
好像可以分开写吧,不用嵌套
--------------------------------------------------------------------
看得有点头晕,不知你的数据库是怎样设计的
我做过的考试页就是题型固定的
单选题:

<asp:GridView ID="GridView1" runat="server" Width=100% AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label id="Label24" runat="server" Text="一、单选题(每题">
</asp:Label>
<asp:Label id="Label27" runat="server">
</asp:Label>
<asp:Label ID="Label25" runat="server" Text="分)">
</asp:Label><br /><br />
</HeaderTemplate>
<ItemTemplate>
<TABLE id="Table2" cellSpacing="1" cellPadding="1" width="100%" align="center" border="0">
<TR>
<TD colSpan="3">
<asp:Label id="Label1" runat="server" Text='<%# Container.DataItemIndex+1 %>'>
</asp:Label>
<asp:Label id="Label2" runat="server" Text='<%# Eval("Title","、{0}") %>'>
</asp:Label>
<asp:Label id=Label4 runat="server" Text='<%# Eval("Mark") %>' Visible=false>
</asp:Label>
<asp:Label id="Label40" runat="server" Text='<%# Eval("TitleID") %>' Visible="False"></asp:Label>
</TD>
</TR>
<TR>
<TD width="35%">
<asp:RadioButton id=RadioButton1 runat="server" Text='<%# Eval("AnswerA") %>' GroupName="Sl">
</asp:RadioButton></TD>
<TD width="35%">
<asp:RadioButton id=RadioButton2 runat="server" Text='<%# Eval("AnswerB") %>' GroupName="Sl">
</asp:RadioButton></TD>
<TD></TD>
</TR>
<TR>
<TD width="35%">
<asp:RadioButton id=RadioButton3 runat="server" Text='<%# Eval("AnswerC") %>' GroupName="Sl">
</asp:RadioButton></TD>
<TD width="35%">
<asp:RadioButton id=RadioButton4 runat="server" Text='<%# Eval("AnswerD") %>' GroupName="Sl">
</asp:RadioButton></TD>
<TD></TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle Font-Size="12pt" HorizontalAlign="Left" />
</asp:GridView>
--------------------------------------------------------------------
多选题:
<asp:GridView ID="GridView2" runat="server" Width=100% AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label id="Label22" runat="server" Text=二、多选题(每题>
</asp:Label>
<asp:Label id="Label28" runat="server">
</asp:Label>
<asp:Label ID="Label23" runat="server" Text=分)>
</asp:Label><br /><br />
</HeaderTemplate>
<ItemTemplate>
<TABLE id="Table3" cellSpacing="1" cellPadding="1" width="100%" align="center" border="0">
<TR>
<TD colSpan="3">
<asp:Label id="Label5" runat="server" Text='<%# Container.DataItemIndex+1 %>'>
</asp:Label>
<asp:Label id="Label6" runat="server" Text='<%# Eval("Title","、{0}") %>'>
</asp:Label>
<asp:Label id=Label8 runat="server" Text='<%# Eval("Mark") %>' Visible=false>
</asp:Label>
<asp:Label id="Label41" runat="server" Text='<%# Eval("TitleID") %>' Visible="False"></asp:Label>
</TD>
</TR>
<TR>
<TD style="HEIGHT: 22px" width="35%">
<asp:CheckBox id=CheckBox1 runat="server" Text='<%# Eval("AnswerA") %>'>
</asp:CheckBox></TD>
<TD style="HEIGHT: 22px" width="35%">
<asp:CheckBox id=CheckBox2 runat="server" Text='<%# Eval("AnswerB") %>'>
</asp:CheckBox></TD>
<TD style="HEIGHT: 22px"></TD>
</TR>
<TR>
<TD width="35%">
<asp:CheckBox id=CheckBox3 runat="server" Text='<%# Eval("AnswerC") %>'>
</asp:CheckBox></TD>
<TD width="350%">
<asp:CheckBox id=CheckBox4 runat="server" Text='<%# Eval("AnswerD") %>'>
</asp:CheckBox></TD>
<TD></TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle Font-Size="12pt" HorizontalAlign="Left" />
</asp:GridView>
公识在波光
2019-02-12 · TA获得超过3608个赞
知道大有可为答主
回答量:3107
采纳率:31%
帮助的人:165万
展开全部
错误原因应该是
外层dl
bind方法时产生的
我没细看
这种嵌套的一般绑定方法是
我写伪代码你看下
外层
dl
datasource=
“select
*
from
type”
也就是只绑定类别
然后
后台写个方法
如:dataset
binddl(string
type)
{
return
"select
*
from
detil
where
type=@type"
@type=type
}
然后页面
内层
dl
<asp:DataList
ID="dladdrson"
runat="server"
Width="100%"
DataSource="<%#binddl(Eval("type"))%>">
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在姿茂瀚昂
2019-05-18 · TA获得超过3772个赞
知道大有可为答主
回答量:3093
采纳率:29%
帮助的人:242万
展开全部
<asp:DataList
ID="DataList1"
runat="server"
OnDataBinding="DataList1_DataBinding">
<ItemTemplate>
<asp:GridView
ID="GridView1"
runat="server">
<Columns>
<asp:TemplateField
HeaderText="radio">
<ItemTemplate>
<asp:RadioButton
ID="RadioButton1"
runat="server"
/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:DataList>
在DataList1_DataBinding中对gridview进行数据绑定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式