如何解决在对象的下拉列表中使用Databind时出错
我正在为实习学习网络表单,目前情况不佳。
我在一个项目中,需要使用Web api而不是数据库来获取内置于Webforms的系统中所需的数据。
为简化我的问题,可以说我想将一个对象绑定到一个下拉列表。
这是我的班级模型
namespace BindingDataToADropdownlist
{
public class State
{
public int id;
public string sigla;
public string name;
}
}
这是带有简单下拉菜单的.aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="BindingDataToADropdownlist._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<asp:DropDownList ID="CboState" runat="server" Height="56px" Width="129px">
</asp:DropDownList>
</asp:Content>
这是背后的代码
namespace BindingDataToADropdownlist
{
public partial class _Default : Page
{
protected void Page_Load(object sender,EventArgs e)
{
List<State> listStates = new List<State>();
listStates.Add(new State() { id = 33,sigla = "RJ",name = "Rio de Janeiro" });
listStates.Add(new State() { id = 34,sigla = "SP",name = "Sao Paulo" });
CboState.DataTextField = "name";
CboState.DataValueField = "id";
CboState.DataSource = listStates;
CboState.DataBind();
}
}
}
我遇到了错误
“ DataBinding:'BindingDataToADropdownlist.State'不包含名称为'name'”
的属性如果我不使用
CboState.DataTextField = "name";
CboState.DataValueField = "id";
该下拉列表可以正常工作,但会按预期显示两个中的BindingDataToADropdownlist.State。
如何正确绑定ID和名称?
解决方法
使用您的示例,我们可以通过手动构建和添加列表项来填充下拉列表。
private void AddStatesToDDL()
{
List<State> states = new List<State>();
states.Add(new State { id = 33,sigla = "RJ",name = "Rio de Janeiro" });
states.Add(new State { id = 34,sigla = "SP",name = "Sao Paulo" });
foreach (State state in states)
{
CboState.Items.Add(new ListItem(state.name,state.id.ToString()));
}
}
仅在初始页面加载时运行此代码,以避免在回发期间重复项目。
,在提供下拉列表时使用System.Web.UI.WebControls.ListItem
,并且您不想设置用于文本和值的字段。
private List<ListItem> getItemList()
{
List<ListItem> itemList = new List<ListItem>();
itemList.Add(new ListItem {
Text = "Item1",Value = "1"
});
itemList.Add(new ListItem
{
Text = "Item2",Value = "2"
});
itemList.Add(new ListItem
{
Text = "Item3",Value = "3"
});
return itemList;
}
DropDownList1.DataSource = getItemList();
DropDownList1.DataBind();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。