ASP.NET Web 控件下拉列表对象填充

Posted

技术标签:

【中文标题】ASP.NET Web 控件下拉列表对象填充【英文标题】:ASP.NET web control drop down list object population 【发布时间】: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);

提前致谢!

【问题讨论】:

【参考方案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

以上是关于ASP.NET Web 控件下拉列表对象填充的主要内容,如果未能解决你的问题,请参考以下文章

如何将 javascript 与 asp.net 下拉列表控件一起使用?

如何从现有 SQL DB ASP.Net MVC 4 在下拉列表中填充数据

来自 web api 的 asp.net web 表单下拉列表

如何使用 ajax 在 Asp.net 中填充下拉列表

如何通过 ajax 使用数据库数据填充 ASP.NET MVC 4 下拉列表

如何验证从 asp.net 中的 SQL 填充的下拉列表(UnobtrusiveValidationMode)错误