<asp:Panel ID="Panel1" runat="server" class="Exam">一、单选题<span>(每题<%=dt.Rows[0]["E_RadioScore"].ToString() %>分)</span></asp:Panel>
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<div class="Examtitle"><%# Eval("No","{0}、") %><asp:Label ID="Label1" runat="server" Text='<%# Eval("Ra_Title") %>' /></div>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("Ra_ID") %>' />
<asp:RadioButtonList ID="RadioButtonList1" runat="server" DataTextField="RL_Title" DataValueField="RL_IsYes">
</asp:RadioButtonList>
</ItemTemplate>
</asp:Repeater>
后台:public DataTable dt;
public DataTable answerdt;
public int min;
int subID;
int id;
int AnswerID;
protected void Page_Load(object sender, EventArgs e)
{
id = Convert.ToInt32(Request.QueryString["id"]);
dt = new ExamManager().GetByID(id);
min = Convert.ToInt32(dt.Rows[0]["E_Min"].ToString());
subID=Convert.ToInt32(Convert.ToInt32(dt.Rows[0]["Subject_ID"].ToString()));
if (!IsPostBack&&Session["user"] == null)
{
PageBase.alert(Page, "请先登陆");
return;
}
if (!IsPostBack)
{
ViewState["user"] = Session["user"];
ViewState["time"] = DateTime.Now;
}
DataTable SessionDT = (DataTable)ViewState["user"];
int vipid=Convert.ToInt32(SessionDT.Rows[0]["V_ID"].ToString());
if ((new AnswerManager().GetByVipAndExam(vipid, id, 1).Rows.Count > 0 || new AnswerManager().GetByVipAndExam(vipid, id, 0).Rows.Count > 0) && !IsPostBack)
{
Page.ClientScript.RegisterClientScriptBlock(GetType(), "key", "alert('您已经考过本次试卷,不能重复考试')", true);
return;
}
if (!IsPostBack)
{
AnswerID = new AnswerManager().Add(vipid, id, 0);
ViewState["AnswerID"] = AnswerID;
Bind();
}
else
AnswerID = Convert.ToInt32(ViewState["AnswerID"]);
answerdt = new AnswerManager().GetByID(AnswerID);
try
{
min = Convert.ToInt32(dt.Rows[0]["E_Min"].ToString()) - Convert.ToInt32(answerdt.Rows[0]["Min"].ToString());
}
catch { return; }
} protected void Bind()
{
DataTable radiodt=new RadioManger().GetByExam(subID);
foreach(DataRow row in radiodt.Rows)
new AnswerSaveManager().Add(AnswerID, "0", (int)row["Ra_ID"], 1);
///单选题绑定
Repeater1.DataSource = radiodt;
Repeater1.DataBind();
} protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
RadioButtonList rlist = e.Item.FindControl("RadioButtonList1") as RadioButtonList;
HiddenField hid = e.Item.FindControl("HiddenField1") as HiddenField;
DataTable rdt = new RadioListManger().Get(Convert.ToInt32(hid.Value));
rlist.DataSource = rdt;
rlist.DataBind();
//foreach (DataRow row in rdt.Rows)
// rlist.Items.Add(new ListItem(row["RL_Title"].ToString(), row["RL_IsYes"].ToString()));
}
}
protected void Button2_Click(object sender, EventArgs e)
{
new AnswerSaveManager().Del(AnswerID);
for (int i = 0; i < Repeater1.Items.Count; i++)
{
RadioButtonList r = Repeater1.Items[i].FindControl("RadioButtonList1") as RadioButtonList;
HiddenField hid = Repeater1.Items[i].FindControl("HiddenField1") as HiddenField;
int answer = r.SelectedIndex + 1;//这里的selectedIndex怎么调试都是0和1
new AnswerSaveManager().Add(AnswerID, answer.ToString(), Convert.ToInt32(hid.Value), 1);
} DateTime start = (DateTime)ViewState["time"];
TimeSpan ts = DateTime.Now-start;
int min = Convert.ToInt32(ts.TotalMinutes);
new AnswerManager().EditMin(AnswerID, min);
ViewState["time"] = DateTime.Now;
}高手帮我看下,单选题我有四个选项,比方我有四题,我分别选中A,B,C,D相当于数据库的1,2,3,4可数据库存的四个数据是1,1,1,2(应该存的是1,2,3,4)我调试看的数组count都为4个答案,为什么就SelectIndex为什么总是选中项和我的不同?为什么答案会这样?
解决方案 »
- 几个小问题,大家帮帮忙
- 求救!!在多个表中搜索关键字遇到的问题
- System.NullReferenceException: 未将对象引用设置到对象的实例
- 请问asp.net中,如何使用后端代码来调用前端的JavaScript代码。或者如何来控制非服务器的控件(HTml控件)的属性。
- 一个按钮问题,请各位高手大虾解答!!
- 高分求救!!这段对 XML 操作的 Web Service 代码错在哪了??
- ASP.NET在Mono下运行后出现Server Error in '/' Application 怎么解决
- 图片上传程序大家通常都是怎么搞的?
- .net 2003的代码自动完成在哪?
- 求教急急急!!!!一个dataset问题。
- JS在IE下获取图片大小
- ajax中city,area,type获得的lbl值都是空值,不知道哪里有错,希望大家能帮帮忙
{
RadioButtonList r = Repeater1.Items[i].FindControl("RadioButtonList1") as RadioButtonList;
HiddenField hid = Repeater1.Items[i].FindControl("HiddenField1") as HiddenField;
//再次遍历RadioButtonList 的Items 判断checked
int answer = r.SelectedIndex + 1;//这里的selectedIndex怎么调试都是0和1
new AnswerSaveManager().Add(AnswerID, answer.ToString(), Convert.ToInt32(hid.Value), 1);
}
int answer = 0;
int selectindex=0;
foreach (ListItem li in r.Items)
{
++selectindex;
if (li.Selected)
answer = selectindex;
}
还是一样的效果
r.Items.Count 4 int
r.Items[0].Text "核能" string
r.Items[1].Text "生物质能" string
r.Items[2].Text "太阳能发电" string
r.Items[3].Text "风力发电" string上面是我调试的结果,界面上面选的是C,也就是索引2,这里调试出来是选的B,对这个问题吊死了一天时间了