我在转发器下面有单选按钮列表。 在Repeater项目数据绑定我的绑定单选按钮列表,但它绑定datareader中的每个字符。 如果我将控制权改为单选按钮,它可以正常工作。
<cms:CMSRepeater ID="rpt_Questions" runat="server" OnItemDataBound="rpt_Questions_ItemDataBound">
<ItemTemplate>
<div><span class="presenter"><%# Container.DataItem%></span></div>
<div>
<%-- <Strong><%# Container.DataItem%></Strong>--%>
<ul class="clearfix">
<cms:QueryRepeater ID="rpt_Answers" runat="server" OnItemDataBound="rpt_Answers_ItemDataBound">
<ItemTemplate>
<asp:RadioButtonList ID="rbtAnswers" runat="server" />
</ItemTemplate>
</cms:QueryRepeater>
</ul>
</div>
</ItemTemplate>
</cms:CMSRepeater>
protected void rpt_Answers_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem)
{
RadioButtonList rblAnswers = (RadioButtonList)e.Item.FindControl("rbtAnswers");
System.Data.DataRowView drAnswer;
drAnswer = (DataRowView)e.Item.DataItem;
rblAnswers.DataSource = drAnswer["Answer"].ToString();
rblAnswers.DataBind();
}
}
假设我期待3个带有值a1,a2,a3
的单选按钮
它正在创建6个单选按钮
a ,1,a,2,a3
这是因为我有转发器然后重新启动然后复选框列表?
答案 0 :(得分:0)
protected void rpt_Answers_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem)
{
RadioButtonList rblAnswers = (RadioButtonList)e.Item.FindControl("rbtAnswers");
System.Data.DataRowView drAnswer;
drAnswer = (DataRowView)e.Item.DataItem;
rblAnswers.DataSource = drAnswer["Answer"];
rblAnswers.DataBind();
}
}
答案 1 :(得分:0)
Sudhir的回答可能有助于你的案子。您可以先尝试检查项目的类型,如果它是您要查找的项目,则添加一个值。
但是根据您提供的结果,我怀疑您实际上是向读者发送了6个值。你看,如果它创建6个按钮“1,a,2,a,3,a”,则表示它获得6个值。
如果是这种情况,您应该创建一个具有“1”值的列表,并将其发送到具有适当显示区域的转发器。