asp.net下无法循环绑定投票的标题和选项的解决方法

问题:1,无法循环绑定投票的标题和选项

  解决方法: 在Repeater绑定中添加ItemDataBound事件,选项用RadioButtonList绑定,附源代码:

  Default页,源页面

  

复制代码 代码如下:

  <div>

  广大网友对保障房建设相关问题调查<br />

  <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">

  <ItemTemplate>

  <table>

  <tr>

  <td colspan="3">

  <b>

  <%# Eval("t_timu")%>

  <asp:Literal ID="Literal1" Text='<%# Eval("t_id")%>' runat="server"></asp:Literal>

  </b>

  </td>

  </tr>

  <tr>

  <asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal">

  </asp:RadioButtonList>

  </tr>

  </table>

  </ItemTemplate>

  </asp:Repeater>

  <br />

  <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提交" />

  <asp:Button ID="Button2" runat="server" Text="查看结果" OnClick="Button2_Click" />

  </div>

  对应的cs页:

  

复制代码 代码如下:

  protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)

  {

  Literal Literal1 = (Literal)e.Item.FindControl("Literal1");

  RadioButtonList RadioButtonList1 = (RadioButtonList)e.Item.FindControl("RadioButtonList1");

  RadioButtonList1.DataSource = dcw_toupiao_M.dcw_toupiao_getxuanxian(Convert.ToInt32(Literal1.Text));

  RadioButtonList1.DataTextField = "x_name";

  RadioButtonList1.DataValueField = "x_id";

  RadioButtonList1.DataBind();

  }

  问题2: 无法循环获得用户的选择

  解决方法: 先循环Repeater控件的Item获得RadioButtonList控件,循环检测是否为选中状态,,如果是则拼接到一个字符串中,

  再把题目的编号获得拼接起来,循环添加,附源代码:

  Default的cs页:

  

复制代码 代码如下:

  protected void Button1_Click(object sender, EventArgs e)

  {

  string zifu = "";

  string Pid = "";

  int tiaoshu = 5;

  foreach (RepeaterItem iemt in Repeater1.Items)

  {

  RadioButtonList rbtn = iemt.FindControl("RadioButtonList1") as RadioButtonList;

  try

  {

  if (rbtn.SelectedItem.Selected)

  {

  zifu += rbtn.SelectedItem.Value + ",";

  }

  Literal Literal1 = (Literal)iemt.FindControl("Literal1"); //e.Item.FindControl("");

  if (Literal1.Text != "")

  {

  Pid += Literal1.Text + ",";

  }

  }

  catch (Exception ex)

  {

  }

  }

  string[] xid = null;

  xid = zifu.TrimEnd(',').Split(',');

  string[] pid = null;

  pid = Pid.TrimEnd(',').Split(',');

  if (dcw_toupiao_M.dcw_toupiao_Insert(xid, pid, tiaoshu))

  {

  this.ClientScript.RegisterClientScriptBlock(typeof(string), "ok", "<script>alert('投票成功!谢谢参与')</script>");

  }

  else

  {

  this.ClientScript.RegisterClientScriptBlock(typeof(string), "ok", "<script>alert('请完成选择')</script>");

  }

  }

  DAL页:

  

复制代码 代码如下:

  public static bool dcw_toupiao_Insert(string[] xid, string[] pid, int tiaoshu)

  {

  bool flag = false;

  for (int i = 0; i < pid.Length; i++)

  {

  SqlParameter[] prm = new SqlParameter[2];

  prm[0] = new SqlParameter("@xid", Int32.Parse(xid[i]));

  prm[1] = new SqlParameter("@pid", Int32.Parse(pid[i]));

  if (dcw_toupiao_M.dcw_toupiao_gettcount(Convert.ToInt32(xid[i]), Convert.ToInt32(pid[i])))

  {

  flag = _dc_toupiao_DB.SqlHelper.ExeucteNonQuery("sm_dcw_toupiao_Insert", CommandType.StoredProcedure, prm) > 0;

  }

  }

  return flag;

  }

  所掌握的技巧:

  JavaScript跳转:

  this.ClientScript.RegisterClientScriptBlock(typeof(string), "ok", "<script>alert('投票成功!谢谢参与')</script>");

  两种获得控件的方法:

  Literal Literal1 = (Literal)e.Item.FindControl("Literal1");

  Literal Literal1 = e.Item.FindControl("Literal1") as Literal;