62,269
社区成员
发帖
与我相关
我的任务
分享
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<!-- 题目显示 -->
<asp:DataList ID="DataList1" runat="server" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
题目:<br />
<asp:Label ID="t1" runat="server" Text='<%# Eval("题目") %>'></asp:Label>
<asp:HiddenField ID="HiddenField1" Value='<%# Eval("题目ID") %>' runat="server" />
<br />答案:
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:DataList>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提交" />
</div>
<div>
你选的答案:<br />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//绑定题目,自己从数据库里读取,这里手动添加
DataTable dt = new DataTable();
dt.Columns.Add("题目ID", typeof(string));
dt.Columns.Add("题目", typeof(string));
DataRow dr = dt.NewRow();
dr["题目"] = "测试题目";
dr["题目ID"] = "1";
dt.Rows.Add(dr);
DataList1.DataSource = dt;
DataList1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("题目");
dt.Columns.Add("答案");
//点击提交,得到所有题和相应答案
for (int i = 0; i < DataList1.Items.Count; i++)
{
HiddenField tmId = (HiddenField)DataList1.Items[i].FindControl("HiddenField1");//题目的ID
DropDownList dd = (DropDownList)DataList1.Items[i].FindControl("DropDownList1");
try
{
DataRow dr = dt.NewRow();
dr["题目"] = tmId.Value;
dr["答案"] = dd.SelectedValue;
dt.Rows.Add(dr);
}
catch
{
}
}
//保存dt..............
//显示选择的答案
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{//绑定相应题的答案选项,这里用的是dropdownlist绑定的。自己可以改成其它的,基本上差不多
if (e.Item.ItemType == ListItemType.Item)
{
DropDownList dd = (DropDownList)e.Item.FindControl("DropDownList1");
try
{
HiddenField tmId = (HiddenField)e.Item.FindControl("HiddenField1");//题目的ID
//通过题目ID得到相应的答案列表,并绑定
//这里手动添加测试数据
DataTable dt= new DataTable();
dt.Columns.Add("ID", typeof(string));
dt.Columns.Add("DA", typeof(string));
DataRow dr1 = dt.NewRow();
dr1["ID"] = "1";
dr1["DA"] = "A........";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = "2";
dr2["DA"] = "B........";
dt.Rows.Add(dr2);
dd.DataSource =dt;
dd.DataTextField = "DA";
dd.DataValueField = "ID";
dd.DataBind();
}
catch
{
}
}
}
}
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>无标题页</title>
<script type="text/javascript">
var ids = '';
function AddId(id)
{
ids = ids + ',' + id ;
}
function SetHidden()
{
document.getElementById('ids').value = ids;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="rpt" runat="server">
<ItemTemplate>
<ul>
<li><%# ((System.Data.DataRowView)Container.DataItem)["题目名称"]%></li>
<li>A.<input name="r<%# DataBinder.Eval(Container.DataItem,"题目id")%>" type="radio" value="A" /><%# DataBinder.Eval(Container.DataItem, "答案A")%></li>
<li>B.<input name="r<%# DataBinder.Eval(Container.DataItem,"题目id")%>" type="radio" value="B" /><%# DataBinder.Eval(Container.DataItem, "答案B")%></li>
<li>C.<input name="r<%# DataBinder.Eval(Container.DataItem,"题目id")%>" type="radio" value="C" /><%# DataBinder.Eval(Container.DataItem, "答案C")%></li>
<li>D.<input name="r<%# DataBinder.Eval(Container.DataItem,"题目id")%>" type="radio" value="D" /><%# DataBinder.Eval(Container.DataItem, "答案D")%></li>
</ul>
<script type="text/javascript">
AddId('<%# DataBinder.Eval(Container.DataItem,"题目id")%>');
</script>
</ItemTemplate>
</asp:Repeater>
<input id="ids" name="ids" type="hidden" value="" />
<script type="text/javascript">
SetHidden();
</script>
<%=str %>
<p><asp:Button ID="btnSubmit" runat="server" Text="提交" onclick="btnSubmit_Click" /></p>
</form>
</body>
</html>
public string str = null;
protected void Page_Load(object sender, EventArgs e)
{
//ORDER BY id ASC的DataSource
rpt.DataSource = DataSource;
rpt.DataBind();
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
Is();
str = str == null ? "全对" : str;
}
//结果赋值
private void Is()
{
string[] ids = Request.Form["ids"].Remove(0, 1).Split(',');
string SQL = "SELECT 答案 FROM reply WHERE 1 = 1 ";
for (int i = 0; i < ids.Length; i++)
{
SQL = SQL + " OR id = " + ids[i];
}
SQL = SQL + " ORDER BY id ASC";
SqlConnection.Open();
SqlDataAdapter DataAdapter = new SqlDataAdapter(SqlCommand(SQL));
DataTable dataTable = new DataTable();
DataAdapter.Fill(dataTable);
SqlConnection.Close();
DataAdapter.Dispose();
for (int i = 0; i < ids.Length; i++)
{
if (dataTable.Rows[i][0].ToString() != Request.Form["r" + ids[i]])
str = str + "题目id " + ids[i] + " 回答错误! 正确答案是: " + dataTable.Rows[i][0].ToString() + "<br/>";
}
dataTable.Dispose();
}