我现在做一个考试页面,分单选,多选,判断和问答
试题是根据用户选择的考试科目自动生成的
上面不是问题
*****************
*   关键的是:  *___
*               *   | 
*****************   V
  
  怎么样才能获取单选题选的是什么,多选题选的是哪几个?判断题应该和单选题类似吧
  如果单选题用radiobuttonlist,那么我如何确定他选的是第几题的哪个答案?
  多选题用checkboxlist,如何确定他选的是第几题的哪几个答案呢?
  望高手不吝赐教啊同时希望各位告诉我一下如何再加分?
如果解决了,我希望给200分
谢谢各位大侠啦

解决方案 »

  1.   

    radiobuttonlist:获取列表控件中索引最小的选定项。
    [Visual Basic]
    Public Overridable ReadOnly Property SelectedItem As ListItem
    [C#]
    public virtual ListItem SelectedItem {get;}
    [C++]
    public: __property virtual ListItem* get_SelectedItem();
    [JScript]
    public function get SelectedItem() : ListItem;
    属性值
    表示从列表控件中选定的最小索引值项的 ListItem。默认值为空引用(Visual Basic 中为 Nothing)。
    备注
    如果列表控件只允许一个选项,则使用此属性可获取选定项的各个属性。如果列表控件允许多个选项,则使用此属性可获取列表控件中索引最小的选定项的属性。
    示例
    [Visual Basic, C#, JScript] 下例说明如何使用 SelectedItem 获取 RadioButtonList 中当前选定项的各个属性并显示该项及其值。
    [Visual Basic] 
    <%@ Page Language="VB" AutoEventWireup="True" %>
    <%@ Import Namespace="System.Data" %>
     
     <html>
     <script language="VB" runat="server">    Function CreateDataSource() As ICollection
            Dim dt As New DataTable()
            Dim dr As DataRow
            
            dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
            dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
            dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime)))
            dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean)))
            dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))
            
            Dim i As Integer
            For i = 0 To 8
                dr = dt.NewRow()
                
                dr(0) = i
                dr(1) = "Item " + i.ToString()
                dr(2) = DateTime.Now
                If (i Mod 2) <> 0 Then
                    dr(3) = True
                Else
                    dr(3) = False
                End If
                dr(4) = 1.23 *(i + 1)
                
                dt.Rows.Add(dr)
            Next i
            
            Dim dv As New DataView(dt)
            Return dv
        End Function    Sub Page_Load(sender As Object, e As EventArgs)
            If Not IsPostBack Then
                RadioButtonList1.DataSource = CreateDataSource()
                RadioButtonList1.DataTextField = "StringValue"
                RadioButtonList1.DataValueField = "CurrencyValue"
                RadioButtonList1.DataBind()
            End If
        End Sub    Sub Index_Changed(sender As Object, e As EventArgs)        
            Label1.Text = "You selected " & RadioButtonList1.SelectedItem.Text & _
                " with a value of : " & RadioButtonList1.SelectedItem.Value & "."
        End Sub
     
     </script>
     
     <body>
     
        <form runat=server>
     
           <asp:RadioButtonList id="RadioButtonList1" 
                OnSelectedIndexChanged="Index_Changed"
                AutoPostBack="true"
                runat="server"/>
     
           <br>
     
           <asp:Label id="Label1" runat="server"/>
     
        </form>
     
     </body>
     </html>
    [C#] 
    <%@ Page Language="C#" AutoEventWireup="True" %>
    <%@ Import Namespace="System.Data" %>
     
     <html>
     <script language="C#" runat="server">
     
        ICollection CreateDataSource() {
           DataTable dt = new DataTable();
           DataRow dr;
     
           dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
           dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
           dt.Columns.Add(new DataColumn("DateTimeValue", typeof(DateTime)));
           dt.Columns.Add(new DataColumn("BoolValue", typeof(bool)));
           dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
     
           for (int i = 0; i < 9; i++) {
              dr = dt.NewRow();
     
              dr[0] = i;
              dr[1] = "Item " + i.ToString();
              dr[2] = DateTime.Now;
              dr[3] = (i % 2 != 0) ? true : false;
              dr[4] = 1.23 * (i+1);
     
              dt.Rows.Add(dr);
           }
     
           DataView dv = new DataView(dt);
           return dv;
        }
     
        void Page_Load(Object sender, EventArgs e) {
           if (!IsPostBack) {
              RadioButtonList1.DataSource = CreateDataSource();
              RadioButtonList1.DataTextField="StringValue";
              RadioButtonList1.DataValueField="CurrencyValue";
              RadioButtonList1.DataBind();
           }
        }
     
        void Index_Changed(Object sender, EventArgs e) {
     
           Label1.Text = "You selected " + RadioButtonList1.SelectedItem.Text +
                         " with a value of $" + RadioButtonList1.SelectedItem.Value +
                         ".";
     
        }
     
     </script>
     
     <body>
     
        <form runat=server>
     
           <asp:RadioButtonList id="RadioButtonList1" 
                OnSelectedIndexChanged="Index_Changed"
                AutoPostBack="true"
                runat="server"/>
     
           <br>
     
           <asp:Label id="Label1" runat="server"/>
     
        </form>
     
     </body>
     </html>
      

  2.   

    checkboxlist:
    本主题中的信息适用于所有列表 Web 服务器控件:ListBox、DropDownList、CheckBoxList 和 RadioButtonList。
    使用列表 Web 服务器控件时一个最常见的任务是确定用户已选择了哪一项或哪些项。具体过程取决于列表控件 (List Control) 允许单项选择还是多重选择。
    在使用 DropDownList 控件、RadioButtonList 控件和单项选择 ListBox 控件时,请使用下列过程。
    注意   当您的数据绑定列表控件时(通过调用其 DataBind 方法),将丢失当前列表的选定内容。通常不需要在每个往返过程中都调用 DataBind 方法(即在页初始化中不需要检查回发),因为这样做会替换控件中的值。有关详细信息,请参见数据绑定多记录 Web 服务器控件。
    确定单项选择列表控件 (List Control) 中的选定内容 
    使用下列方法之一: 
    若要获取选定项的索引值,请读取 SelectedIndex 属性的值。索引是从零开始的。如果未选择任何项,则该属性的值为 -1。 
    若要获取选定项的内容,请获取该控件的 SelectedItem 属性。该属性返回一个 ListItem 类型的对象。您可以通过获取该对象的 Text 属性或 Value 属性来获取选定项的内容。 
    安全说明   Web 窗体页中的控件可能包含潜在的恶意客户端脚本。默认情况下,Web 窗体页验证用户输入是否不包括脚本或 HTML 元素。有关更多信息,请参见脚本利用和在 Web 应用程序中防止脚本利用。
    下面的示例显示如何测试 RadioButtonList 控件中选定的项。代码首先通过读取 SelectedIndex 属性值来检查是否有选定内容,在用户选择一项之前该属性值设置为 -1。然后代码获取 SelectedItem 对象并显示该对象的 Text 属性。 
    ' Visual Basic
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click   ' Is anything selected? The index is -1 if nothing is selected.
       If RadioButtonList1.SelectedIndex > -1 Then
          Label1.Text="You chose: " & RadioButtonList1.SelectedItem.Text
       End If
    End Sub// C#
    public void Button1_Click (object sender, System.EventArgs e)
    {
       // Is anything selected? The index is -1 if nothing is selected.
       if (RadioButtonList1.SelectedIndex > -1) {
          // The contents of the selection is available in the 
          // SelectedItem objects, which provides the Text, Value,
          // and Selected properties.
          Label1.Text="You chose: " + RadioButtonList1.SelectedItem.Text;
       }
    }
      

  3.   

    关键你得checkbox初始化的时候是如何处理的!
    获取选中状态不成问题吧!至于你的id可以用大题号+小题号+A,B,C,D组成.