有2张表,一张表是保存题目,另外一张表是保存题目对应的答案。
实现效果:
解决方法:使用DataList进行绑定,先对题目用Label控件绑定,题号用hiddenField绑定。关键的地方是在DataList的ItemDataBound事件里对答案RadioButtonList继续绑定。
数据绑定的方法,不要说不会。
对应的页面代码。
<form id="form1" runat="server">
<div>
<asp:DataList ID="DataList1" runat="server" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("subjectcontent") %>'></asp:Label>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("subjectid") %>' />
<br />
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
</asp:RadioButtonList>
</ItemTemplate>
</asp:DataList> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click"
Text="看看选了什么答案" /></div>
</form>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DBClient db = new DBClient("examinationmei2");
string sql = "select * from optionsubject order by subjectid";
DataTable dt = db.getSQLTable(sql, "dt");
DataList1.DataSource = dt;
DataList1.DataBind();
}
}
对应的ItemDataBound事件:
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
RadioButtonList rbl = (RadioButtonList)e.Item.FindControl("RadioButtonList1");
HiddenField hf = (HiddenField)e.Item.FindControl("HiddenField1");
if ((rbl != null)&(hf != null))
{
string sql = "select subjectid,optionid, optioncontent from optiontab where subjectid='"+hf.Value.ToString().Trim()+"'";
rbl.DataTextField = "optioncontent";
rbl.DataValueField = "optionid";
DBClient db = new DBClient("examinationmei2");
DataTable dt = db.getSQLTable(sql, "dt");
rbl.DataSource = dt;
rbl.DataBind();
}
}
判断结果,采用遍历方法: