循环遍历插入,用二位说组或用list、arraylist循环出入查数据,在线等!解决给分!!!!!!!!! +++分了 在线等!!!解决就结贴!!!!

zhoululu8888 2008-12-01 11:30:25
表topic中的字段
tid 题目id (主键)
tname 题目名称
ta 答案A
tb 答案B
tc 答案C
td 答案D
表reply中的字段
rid 答案id
tid 题目id (外键)
tContent 题目答案


主界面用Datalist绑定表topic中的信息,题目答案用radiobutton现实如下
1.你的经济来源主要来自哪里?(题目只能选择一项)
radiobutton A 自己勤工俭学
radiobutton B 做家教
radiobutton c 父母
radiobutton D 其他
2.题目二
radiobutton A ......
radiobutton B ....
radiobutton c ....
radiobutton D ......
3.题目三
radiobutton A ......
radiobutton B ....
radiobutton c ....
radiobutton D ......
4.题目四
radiobutton A ......
radiobutton B ....
radiobutton c ....
radiobutton D ......

提交按钮

当用户提交时插入用户的选择tid和答案到表reply中.....
...全文
162 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
MicroDeviser 2008-12-01
  • 打赏
  • 举报
回复
还有你的题目答案表,这样设计觉得不怎么好,要是有的题有五个答案?
MicroDeviser 2008-12-01
  • 打赏
  • 举报
回复
呵呵,上班没事做,绑你做了一个样子,但是没有去操作数据库
html code:

<%@ 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
{
}
}
}
}

fcxxfcxx 2008-12-01
  • 打赏
  • 举报
回复
学习中
MicroDeviser 2008-12-01
  • 打赏
  • 举报
回复
reply 表少了一个用户ID吧,还有,是不是提交了就不能改了呢
zhoululu8888 2008-12-01
  • 打赏
  • 举报
回复
问题解决了加200分!!!!!!!!!!
yoursWTR 2008-12-01
  • 打赏
  • 举报
回复

<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();
}
mengxj85 2008-12-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 greatverve 的回复:]
你的重点问题是什么?想知道如何取得每道题编号和用户选择的答案?
遍历每一行,取得每一行选择的值。
foreach(datarow r in datalist.Rows)
{
Laber lblID = r.controls[0] as Label;//或者FindControls
}
[/Quote]
greatverve 2008-12-01
  • 打赏
  • 举报
回复
你的重点问题是什么?想知道如何取得每道题编号和用户选择的答案?
遍历每一行,取得每一行选择的值。
foreach(datarow r in datalist.Rows)
{
Laber lblID = r.controls[0] as Label;//或者FindControls
}
MicroDeviser 2008-12-01
  • 打赏
  • 举报
回复
if (e.Item.ItemType == ListItemType.Item)
这句改成
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

62,269

社区成员

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

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

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

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