读书人

请问Repeater中单选框的有关问题

发布时间: 2012-04-12 15:46:35 作者: rapoo

请教Repeater中单选框的问题

HTML code
<asp:Repeater ID="rptSubjectOfSingleSelectionList" runat="server"                    >               <HeaderTemplate>                     <table cellpadding="0" cellspacing="0" class="tableList" width="800">                </HeaderTemplate>                <ItemTemplate>                     <tr >                        <td >                        <asp:HiddenField ID="hidSingleSelectionID" runat="server" Value='<%#Eval("ID") %>'></asp:HiddenField>                        <b>                         (<%#Eval("Index")%>)  <%#Eval("Question") %> (<asp:TextBox ID="txtSingleSelectionAnswer" runat="server" BorderWidth="0"  Width="20px"  MaxLength="1"></asp:TextBox>)                         </b><br />                           <table width="100%" class="tableList2">                                                     <tr align="left"><td style="width:50%"><input id="CBboxA" name="CBboxA" type="radio" value="A" runat="server" />A:<%#Eval("SelectA")%></td><td><input id="CBboxB" name="CBboxB" type="radio" value="B" runat="server" />B:<%#Eval("SelectB")%></td></tr>                           <tr align="left"><td style="width:50%"><input id="CBboxC" name="CBboxC" type="radio" value="C" runat="server" />C:<%#Eval("SelectC")%></td><td><input id="CBboxD" name="CBboxD" type="radio" value="D" runat="server" />D:<%#Eval("SelectD")%></td></tr>                           </table>                            </td>                    </tr>                </ItemTemplate>                <FooterTemplate>                     </table>                </FooterTemplate>               </asp:Repeater>


现在想实现单选,因为是做在线考试,选择题单选无法实现,是不是要结合JS啊,我JS不行 帮帮我哈

[解决办法]
给你一个完整的例子
HTML code
<%@ Page Language="C#" AutoEventWireup="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">  protected void Page_Load(object sender, EventArgs e)  {    if (!Page.IsPostBack)    {      System.Data.DataTable dataTable1 = new System.Data.DataTable();      System.Data.DataRow dr;      dataTable1.Columns.Add(new System.Data.DataColumn("ID", typeof(System.Int32)));      dataTable1.Columns.Add(new System.Data.DataColumn("SelectA", typeof(System.String)));      dataTable1.Columns.Add(new System.Data.DataColumn("SelectB", typeof(System.String)));      dataTable1.Columns.Add(new System.Data.DataColumn("SelectC", typeof(System.String)));      dataTable1.Columns.Add(new System.Data.DataColumn("SelectD", typeof(System.String)));      for (int i = 0; i < 8; i++)      {        dr = dataTable1.NewRow();        dr[0] = i*2;        dr[1] = "【孟子E章】" + i.ToString();        dr[2] = "【xxxxx" + i.ToString();        dr[3] = "【yyyyyy】" + i.ToString();        dr[4] = "【测试】" + i.ToString();        dataTable1.Rows.Add(dr);      }      rptSubjectOfSingleSelectionList.DataSource = dataTable1;      rptSubjectOfSingleSelectionList.DataBind();    }  }  protected void Button1_Click(object sender, EventArgs e)  {    foreach (RepeaterItem item in rptSubjectOfSingleSelectionList.Items)    {      HiddenField hidSingleSelectionID = item.FindControl("hidSingleSelectionID") as HiddenField;      Response.Write("<li>问题id=" + hidSingleSelectionID.Value + "的选项是:" + Request.Form["CBbox" + hidSingleSelectionID.Value]);      TextBox txtSingleSelectionAnswer = item.FindControl("txtSingleSelectionAnswer") as TextBox;      Response.Write("   输入的内容是:" + txtSingleSelectionAnswer.Text);    }  }</script><html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat="server">  <title></title></head><body>  <form id="form1" runat="server">  <asp:Repeater ID="rptSubjectOfSingleSelectionList" runat="server">    <HeaderTemplate>      <table cellpadding="0" cellspacing="0" class="tableList" width="800">    </HeaderTemplate>    <ItemTemplate>      <tr><td>        <asp:HiddenField ID="hidSingleSelectionID" runat="server" Value='<%#Eval("ID") %>'>        </asp:HiddenField>        <b>问题 <%#Eval("ID") %> 省略: (<asp:TextBox ID="txtSingleSelectionAnswer" runat="server" BorderWidth="0"          Width="20px" MaxLength="1"></asp:TextBox>) </b>        <br />        <table width="100%" class="tableList2">          <tr align="left"><td style="width: 50%">            <input name="CBbox<%#Eval("ID") %>" type="radio" value="A" />A:<%#Eval("SelectA")%>          </td><td>            <input name="CBbox<%#Eval("ID") %>" type="radio" value="B" />B:<%#Eval("SelectB")%>          </td></tr>          <tr align="left"><td style="width: 50%">            <input name="CBbox<%#Eval("ID") %>" type="radio" value="C" />C:<%#Eval("SelectC")%>          </td><td>            <input name="CBbox<%#Eval("ID") %>" type="radio" value="D" />D:<%#Eval("SelectD")%>          </td></tr>        </table>      </td></tr>    </ItemTemplate>    <FooterTemplate>      </table>    </FooterTemplate>  </asp:Repeater>  <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提交答案" />  </form></body></html> 


[解决办法]
我做过的,以下是行的通的代码。如果帮的上,别忘记给分哦,呵呵

1,ItemTemplate中的代码 单选框要设置AutoPostBack="true",并添加一个事件
<td align=center>
<asp:RadioButton ID="RadioButton1"

AutoPostBack="true" GroupName="TopicGroup" runat="server" Checked='<%#

DataBinder.Eval(Container.DataItem,"IsCurrent") %>'
OncheCkedChanged="RadioButton1_CheckedChanged" />
</td>

2,单选框事件代码
protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
{
RadioButton rdb = sender as RadioButton;
RepeaterItem item = rdb.Parent as RepeaterItem;

int count = rp1.Items.Count;
string Id = (item.FindControl("hidId") as HiddenField).Value;

Entity.Topics model = TopicsBll.GetEntityByTopicID(Convert.ToInt32(Id));

model.IsCurrent = true;
TopicsBll.UpdateTopicCurrent(model);

for (int i = 0; i < count; i++)
{

RadioButton rdb1 = rp1.Items[i].FindControl("RadioButton1") as RadioButton;

if (i != item.ItemIndex)
{
rdb1.Checked = false;

}

}

DataBindConfigInfo();




}

读书人网 >asp.net

热点推荐