2009-02-10 63 views
1

背景:我正在使用ASP.NET 2.0(使用C#),下面的代碼是嵌入在DataGrid控件中的 。 我在.aspx文件如下:ASP.NET - 輕鬆交換布爾值的方法?

 <ASP:TEMPLATECOLUMN HeaderText="Includes CRS Statement?">  
      <ITEMTEMPLATE> 
       <asp:RadioButtonList id="rblSCIncludesCRSStatement" runat="server" RepeatDirection="Horizontal" 
       SelectedIndex='<%# Convert.ToInt32(DataBinder.Eval(Container, "DataItem.CRS_Included")) %>' 
       DataValueField="CRS_Included" RepeatLayout="Flow"> 
        <asp:ListItem value="true" selected="true">Yes</asp:ListItem> 
        <asp:ListItem value="false">No</asp:ListItem> 
        </asp:RadioButtonList> 
      </ITEMTEMPLATE> 
     </ASP:TEMPLATECOLUMN> 
     <ASP:BOUNDCOLUMN visible="false" HeaderText="IncludesCRSStatement" DataField="CRS_Included"></ASP:BOUNDCOLUMN> 

它應該綁定在RadioButtonList CRS_Included布爾值。它工作,但以相反的順序。是轉爲否,否轉爲是,我可以看到解決它的唯一方法是交換ListItems的順序,這是違反直覺的(單選按鈕不應該像No/Yes一樣開始,它需要成爲是/否)。

有沒有人知道一個快速的方法(最好使用.NET函數)將0替換爲0,1替換爲0並無縫修復問題?或者,有沒有更好的方式來編寫SelectedIndex代碼?

任何幫助理解:-)

+0

如果你喜歡喬恩的答案,你應該將其標記爲接受! – 2009-02-11 01:56:57

回答

13
SelectedIndex='<%# 1 - Convert.ToInt32(...) %> 

1 - 0 = 1; 1 - 1 = 0案例換:)

編輯:有可能是處理的更普遍的問題有更好的方式 - 這只是解決了1/0交換:)

+0

* duh *爲什麼我沒有想到:)使用數學函數的想法出現在我身上,但我想的是mod()或其他...認真的想法雖然很棒! – n2009 2009-02-11 00:03:02

4

爲什麼簡單的方法不使用SelectedValue屬性而不是SelectedIndex。

0

您是否嘗試過使用SelectedValue而不是SelectedIndex。

(來自MSDN)SelectedValue屬性還可以用於通過設置項目的值來選擇列表控件中的項目。