绑定asp:DropDownList SelectedValue到布尔值不起作用 - 任何解决方法?

 常德锦江-余欢 发布于 2023-02-06 17:17

我们的UX团队不喜欢处理布尔值的复选框 - 他们想要一个asp:DropDownList,它有两个true/false选项.

我的bool必须使用<%#Bind("")%>进行绑定,因为它位于asp:GridView的编辑模板中.

这是我的代码:


    ...
    
        ...
        
            ...
            
                
                    
                    
                
            
        
        ...
    

在EditItemTemplate中有一个断点,我试着在即时窗口中关注:

Eval("Exclude")
false

其中"假"是Eval的结果.为了好的措施,我确实尝试将我的"真实"项目的值更改为:"True","T","t","Y","y"," - 1","0"," 1",""所有产生相同的例外:

'DropDownList'具有选定值,该值无效,因为它不存在于项列表中.

我尝试使用"OnDataBinding"事件,但这根本没有帮助我(也许我只是做错了).

我不想在我们的类中添加一个属性,将bool转换为字符串/整数(因为它可以立即工作).

将bool绑定到DropDownList是不可能的 - 如果是,为什么在ASP.NET中有这个限制是有意义的?很难看到支持整数和DropDownList中的布尔值之间的区别.

1 个回答
  • 我用大写(True | False)改变了ListItemValue start,它运行正常.你可能想尝试一下.

    在此输入图像描述

    <asp:DropDownList ID="ExcludedDropDown" runat="server" 
        SelectedValue='<%# Bind("IsExcluded") %>'>
        <asp:ListItem Value="True" Text="Include"></asp:ListItem>
        <asp:ListItem Value="False" Text="Exclude"></asp:ListItem>
    </asp:DropDownList>
    

    这是我测试的方式

    public class Something
    {
        public string Some { get; set; }
        public bool IsExcluded { get; set; }
    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            var collections = new List<Something>
            {
                new Something {Some = "One", IsExcluded = true},
                new Something {Some = "Two", IsExcluded = false},
            };
            GridView1.DataSource = collections;
            GridView1.DataBind();
        }
    }
    

    2023-02-06 17:19 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有