同样遇到了在Repeater绑定数据过程中增加判断的问题,百度了一下,看了几篇文章,大有收获,遂整理后,结合自己的内容,加以发布,共同分享!
http://www.newasp.net/tech/asp/14018.html
http://space.cnblogs.com/question/9741/
http://www.z6688.com/info/34246-1.htm
执行判断总结起来有两种方式:
一种是
--<%# DataBinder.Eval(Container.DataItem, "[/"User_Answer/"]").ToString()!=""?"a":"b"%>
--适合简单判断,Yes Or NO
另一种是将数据发到后台处理
--引用http://space.cnblogs.com/question/9741/里面的内容
--前台代码
<asp:TemplateColumn HeaderText="性别">
<ItemTemplate>
<asp:RadioButton runat="server" Checked='<%# ReturnBool(Convert.ToString(DataBinder.Eval(Container.DataItem,"IsParty")))%>' GroupName="dang" Text="是"/>
</ItemTemplate>
</asp:TemplateColumn>
--后台代码
protected string ReturnBool(string str)
{
if(str== "1")
return true;
else
return false;
}
上面的在为RadioButton增加动态Id时会出问题, 不如使用<input type="radio">方便
下面是我的代码:
--前台
--使用下面的后台方法输出<Input Radio>
<%# CreateSelectRadio((DataRow)Container.DataItem) %>
--下面是Radio的Text
<%# DataBinder.Eval(Container.DataItem, "[/"Option_id/"]")%>.<%# DataBinder.Eval(Container.DataItem, "[/"Option_text/"]")%>
--后台代码
-----里面增加了子数据行与父数据行之间的判断。
protected string CreateSelectRadio(DataRow dr)
{
DataRow drParent = dr.GetParentRow("rel_question");
string sRadio = "<input type='radio'";
sRadio += " id='radio" + dr["Question_id"].ToString() + "_" + dr["Option_id"].ToString() + "'";
sRadio += " name='radio" + dr["Question_id"].ToString() + "'";
if (dr["Option_id"].ToString() == drParent["User_Answer"].ToString())
sRadio += " checked";
sRadio += " οnclick='setOptionValue(/"div" + dr["Question_id"].ToString() + "/",/"" + dr["Option_id"].ToString() + "/")'";
sRadio += "/>";
return sRadio;
}