asp.net答题例子出现RadioButton没有赋值的问题

HL_GT 2017-12-16 10:27:46
总是提示答对0道题,求大神指点问题所在。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Repeater1.DataSource =DT();
Repeater1.DataBind();
}
public DataTable DT()
{
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("title");
dt.Columns.Add("a");
dt.Columns.Add("b");
dt.Columns.Add("c");
dt.Columns.Add("d");
dt.Columns.Add("answer");
DataRow dr1 = dt.NewRow();
dt.Rows.Add(dr1);
dr1[0] = "1";
dr1[1] = "最好的学校是?";
dr1[2] = "清华";
dr1[3] = "北大";
dr1[4] = "剑桥";
dr1[5] = "牛津";
dr1[6] = "b";
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
dr[0] = "1";
dr[1] = "word的作用是什么";
dr[2] = "写字";
dr[3] = "画画";
dr[4] = "听歌";
dr[5] = "看电影";
dr[6] = "a";
DataRow dr2 = dt.NewRow();
dt.Rows.Add(dr2);
dr2[0] = "1";
dr2[1] = "最帅的是?";
dr2[2] = "张建";
dr2[3] = "死肥宅";
dr2[4] = "jb可";
dr2[5] = "宇宇";
dr2[6] = "d";
return dt;
}
protected void Button1_Click1(object sender, EventArgs e)
{
int count =0;
foreach(RepeaterItem ri in Repeater1.Items)
{
Console.WriteLine(ri.ToString());
string useranwer="";
RadioButton rbA = ri.FindControl("rdoA") as RadioButton;
if (rbA.Checked)
{
useranwer = "a";
}
RadioButton rbB = ri.FindControl("rdoB") as RadioButton;
if (rbB.Checked)
{
useranwer = "b";
}
RadioButton rbC = ri.FindControl("rdoC") as RadioButton;
if (rbC.Checked)
{
useranwer = "c";
}
RadioButton rbD = ri.FindControl("rdoD") as RadioButton;
if (rbD.Checked)
{
useranwer = "d";
}
Label lab = ri.FindControl("Label2") as Label;
if (lab.Text.ToString()==useranwer.ToString())
{
count++;
}
}
Label1.Text = "答对了" + count.ToString() + "道题!";
}
}
前台的代码:
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Container.ItemIndex+1 %>.<%#DataBinder.Eval(Container.DataItem,"title") %></td>
</tr>
<tr>
<td><asp:RadioButton ID="rdoA" runat="server" GroupName="1" Text='<%#DataBinder.Eval(Container.DataItem,"a") %>'></asp:RadioButton></td>
</tr>
<tr>
<td><asp:RadioButton ID="rdoB" runat="server" GroupName="1" Text='<%#DataBinder.Eval(Container.DataItem,"b") %>'></asp:RadioButton></td>
</tr>
<tr>
<td><asp:RadioButton ID="rdoC" runat="server" GroupName="1" Text='<%#DataBinder.Eval(Container.DataItem,"c") %>'></asp:RadioButton></td>
</tr>
<tr>
<td><asp:RadioButton ID="rdoD" runat="server" GroupName="1" Text='<%#DataBinder.Eval(Container.DataItem,"d") %>'></asp:RadioButton></td>
</tr>
<tr>
<td><asp:Label ID="Label2" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"answer") %>'></asp:Label></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="Button1" runat="server" Text="提交" onclick="Button1_Click1" />
</div>
</form>

</body>
...全文
101 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jason_Mao1 2017-12-16
  • 打赏
  • 举报
回复
绑定 使用 IsPostBack 是必要的。获取是又被重新绑定了 。看看页面的生命周期顺序就知道了。希望能帮助到你。
ying1234 2017-12-16
  • 打赏
  • 举报
回复
把这两句放在if(!Page.IsPostBack){}里 if(!Page.IsPostBack) { Repeater1.DataSource =DT(); Repeater1.DataBind(); }

62,046

社区成员

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

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

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

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