【问题标题】:ASP.NET - Easy way to swap a boolean?ASP.NET - 交换布尔值的简单方法?
【发布时间】:2010-10-06 19:08:42
【问题描述】:

背景:我正在使用 ASP.NET 2.0(使用 C#),下面的代码是 嵌入在 DataGrid 控件中。 我的 .aspx 文件中有以下内容:

        <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>

应该将布尔值 CRS_Included 与 RadioButtonList 绑定。它有效,但顺序相反。是变成否,否变成是,我能看到修复它的唯一方法是交换 ListItems 的顺序,这将是违反直觉的(单选按钮不应该像否/是的那样开始,它需要是是/否)。

有谁知道一种快速的方法(最好使用 .NET 函数)将 0 换成 1、1 换成 0 并无缝解决问题?或者,有没有更好的方法来编写 SelectedIndex 代码?

任何帮助表示赞赏:-)

【问题讨论】:

  • 如果您喜欢 Jon 的回答,您应该将其标记为已接受!

标签: c# asp.net datagrid


【解决方案1】:
SelectedIndex='<%# 1 - Convert.ToInt32(...) %>

1 - 0 = 1; 1 - 1 = 0。交换的案例:)

编辑:可能有更好的方法来处理更一般的问题 - 这只是解决 1/0 交换的简单方法:)

【讨论】:

  • duh 为什么我没有想到 :) 我想到了使用数学函数的想法,但我在想 mod() 之类的......虽然很认真好主意!
【解决方案2】:

为什么不使用 SelectedValue 属性而不是 SelectedIndex。?

【讨论】:

    【解决方案3】:

    您是否尝试过使用 SelectedValue 而不是 SelectedIndex。

    (来自 MSDN)SelectedValue 属性还可用于通过设置项目的值来选择列表控件中的项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 2013-01-29
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 2017-03-20
      • 1970-01-01
      相关资源
      最近更新 更多