Repeater中的條件判斷,以及巢狀判斷if...else... .
同樣遇到了在Repeater繫結資料過程中增加判斷的問題,百度了一下,看了幾篇文章,大有收穫,遂整理後,結合自己的內容,加以釋出,共同分享!
執行判斷總結起來有兩種方式:
一種是
--<%# DataBinder.Eval(Container.DataItem, "[/"User_Answer/"]").ToString()!=""?"a":"b"%>
--適合簡單判斷,Yes Or NO
另一種是將資料發到後臺處理
--前臺程式碼
<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 += " onclick='setOptionValue(/"div" + dr["Question_id"].ToString() + "/",/"" + dr["Option_id"].ToString() + "/")'";
sRadio += "/>";
return sRadio;
}