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;

(0)

相关推荐

  • asp.net for循环语句第1/2页

    for循环的格式为: for([初始化表达式];[条件表达式];[迭代表达式 ]){          //语句块}其中:[初始化表达式];[条件表达式];[迭代表达式 ]都是可选的,[条件表达式]必须是一个布尔表达式. 执行步骤为:第一步:开始执行初始化表达式,只执行一次.第二步:开始执行条件表达式(若为空,则返回true),若为true,则执行大括号中的语句:若为false,则直接跳到for的结束点.第三步:开始执行迭代表达式+条件表达式.第四步:若条件表达式为true,则执行大括号中的语句

  • asp循环行数输出函数

    经过大鸟哥的指导已做全面的修改,本人能力有限只能做到下面这步了: ASP/Visual Basic代码  复制代码 代码如下: <%          Const p=6 '每页2条          set rs = server.createobject("adodb.recordset")          sql = "Select * from show order by id Desc"         rs.Open sql,conn,1 i=0

  • asp中用for循环的一个小技巧

    下面的代码是正确的,也是最常规的写法: 复制代码 代码如下: <% dim i for i=5 to 9 response.write i next %> 下面的代码是错误的,会提示缺少一个'='的错误: 复制代码 代码如下: <% dim i : i=5 for i to 9 response.write i next %> 下面的代码是正确的: [/code] <% dim i i=5 for i=i to 9 response.write i next %> [/

  • 详细讲解ASP脚本循环语句

    如果有人告诉你学习 ASP 不需要任何编程知识,那么他错了:如果我告诉你学习 ASP 必须掌握一门编程语言,那么我错了.ASP 动态服务器页面环境的特点就在于它是通过一种或几种脚本语言而写成的,脚本语言可以看作是编程语言的简化版,它易于学习和掌握,这给广大动态网站的设计者们提供了相当大的便利.可以这么说 : 脚本语言运用的得当与否直接关系到 ASP 应用程序的优与劣.继上一篇我们学习了脚本语言 VBScript 的函数和条件语句后,今天我们继续来看看 VBScript 中的循环语句.  循环语句

  • asp经常被忽视的一种死循环

    <% Url=Request.ServerVariables("HTTP_REFERER") Response.Redirect Url %>

  • asp中for循环的使用方法

    循环是指在指定情况下,多次重复执行一组语句.最常用(for -next. do -loop), 1.重复执行的语句叫循环语句.循环语句可以分为三种类型:(1).当条件不为假之前的时候重复执行语句.(2).当条件变为真之前重复执行语句. (3).按指定的次数重复执行语句. 2.For-Next 循环 如果重复操作的次数固定,使用 For-Next 循环是一个很好的选择,此外也将介绍语法很类似的 For Each-Next循环,它适用在数组或集合的重复循环,(一)For-Next 在 For-Nex

  • asp循环语句总结

    asp的循环语句有以下几类: 循环语句的作用就是重复执行程序代码,循环可分为三类:一类在条件变为"假"之前重复执行语句,一类在条件变为"真"之前重复执行语句,另一类按照指定的次数重复执行语句.在VBScript 中可使用下列循环语句: Do...Loop: 当(或直到)条件为"真"时循环. While...Wend: 当条件为"真"时循环. For...Next: 指定循环次数,使用计数器重复运行语句. For Each...

  • asp.net使用for循环实现Datalist的分列显示功能

    服务器控件虽然用起来方便,但是也牺牲了性能,有些时候用起来显得大而无当.希望先进朋友多多指教. 复制代码 代码如下: /// <summary> /// 工程业绩--用for循环代替了DataList多列显示,得到2行四列的表格,需要内存表的8行数据 /// </summary> private void GcyjShow() { StringBuilder sb = new StringBuilder(); ProductBLL pb = new ProductBLL(); Da

  • asp下循环一行多少个

    <%     set rs = server.createobject("adodb.recordset")     sql = "Select * from friend order by id DESC"    rs.Open sql,conn,1     i=1     do while not rs.eof     %>      <td align="left" height="50">   

  • asp.net中for和do循环语句用法分享

    本示例的FOR循环创建一个Mandelbrot图像. 复制代码 代码如下: using System; namespace a { class Program { public static void Main(string[] args) { double realCoord,imagCoord; double realTemp,imagTemp,realTemp2,arg; int iterations; for (imagCoord=1.2;imagCoord>=-1.2;imagCoor

随机推荐