服务器之家

服务器之家 > 正文

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

时间:2019-09-10 11:46     来源/作者: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;

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-07-24
叠猫猫队长可以退出吗 叠猫猫队长怎么换队伍
叠猫猫队长可以退出吗 叠猫猫队长怎么换队伍 2019-06-05
返回顶部