【问题标题】:ASP.NET web control drop down list object populationASP.NET Web 控件下拉列表对象填充
【发布时间】:2018-12-15 02:11:00
【问题描述】:

我正在使用 ASP.NET 创建带有可变控件的动态 Web 表单。我想要创建的一些控件是下拉列表,我希望它们填充某些自定义子项。我怎样才能做到这一点?我无法用子项本身填充 ddl(它们不是字符串类型),但也无法在不丢失整个子项的情况下用字符串成员变量(subitem.displayName)填充 ddl。以下是一些代码供参考:

 public class SubItem
{
    string displayName;
    string value;
    ...
}

一开始我尝试直接将对象添加到ddl:

DropDownList x;
x.ItemType = SubItem; //error "type not valid in this context"
x.Add(subitem); // error

理想情况下,我可以通过在 ddl 中显示 subitem.name 来解决这个问题,但要解析子项的功能,以便在事件处理程序中访问所有子项的属性。是否存在类似以下内容?

DropDownList x;
x.ItemType = SubItem;
x.DisplayType = SubItem.displayName;
x.Items.Add(subitem);

提前致谢!

【问题讨论】:

    标签: c# asp.net web-controls dynamic-controls


    【解决方案1】:

    您只能绑定具有和IEnumerable 接口的DropDownList。类似于列表或数组。

    //create a new list of SubItem
    List<SubItem> SubItems = new List<SubItem>();
    
    //add some data
    SubItems.Add(new SubItem() { displayName = "Test 1", value = "1" });
    SubItems.Add(new SubItem() { displayName = "Test 2", value = "2" });
    SubItems.Add(new SubItem() { displayName = "Test 3", value = "3" });
    
    //create the dropdownlist and bind the data
    DropDownList x = new DropDownList();
    x.DataSource = SubItems;
    x.DataValueField = "value";
    x.DataTextField = "displayName";
    x.DataBind();
    
    //put the dropdownlist on the page
    PlaceHolder1.Controls.Add(x);
    

    跟班

    public class SubItem
    {
        public string value { get; set; }
        public string displayName { get; set; }
    }
    

    【讨论】:

    • 谢谢!如果我想稍后遍历下拉列表并访问对象,这可能吗?当我尝试时,它说“listItems 无法转换为 SubItem”
    • 不,你不能。它变成了一个ListItem 对象。您必须使用 DDL 的 SelectedValue 创建一个新的SubItem
    猜你喜欢
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多