2009-02-10 39 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属性还可以用于通过设置项目的值来选择列表控件中的项目。