表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中.....

解决方案 »

  1.   

    reply 表少了一个用户ID吧,还有,是不是提交了就不能改了呢
      

  2.   

    呵呵,上班没事做,绑你做了一个样子,但是没有去操作数据库
    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
                {
                }
            }
        }
    }
      

  3.   

    if (e.Item.ItemType == ListItemType.Item)
    这句改成
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      

  4.   

    你的重点问题是什么?想知道如何取得每道题编号和用户选择的答案?
    遍历每一行,取得每一行选择的值。
    foreach(datarow r in datalist.Rows)
    {
     Laber lblID = r.controls[0] as Label;//或者FindControls
    }
      

  5.   


    <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();
            }