数据绑定到控件时出错
本文关键字:出错 控件 数据绑定 | 更新日期: 2023-09-27 18:32:47
我无法通过此代码将数据源链接到中继器
protected void Page_Load(object sender, EventArgs e)
{
//HiddenField used as a placholder
HiddenField username = list.FindControl("username") as HiddenField;
//list is a DataList containing all of the user names
list.DataSource = Membership.GetAllUsers();
list.DataBind();
//Creates a string for each user name that is bound to the datalist
String user = username.Value;
//profilelist is a repeater containing all of the profile information
//Gets the profile of every member that is bound to the DataList
//Repeater is used to display tables of profile information for every user on
// the site in a single webform
profilelist.DataSource = Profile.GetProfile(user);
profilelist.DataBind();
}
我收到错误消息
An invalid data source is being used for profilelist. A valid data source must implement either IListSource or IEnumerable.
好吧,它不起作用的原因是因为Profile.GetProfile
返回ProfileCommon
. 由于错误指出,您设置的类型profilelist.Datasource
等于,必须为 IListSource
或 IEnumerable
。
我建议不要使用中继器,因为您没有要显示的实际重复数据。
编辑
我认为这就是你想做的。
IEnumerable<ProfileCommon> myProfileList = new IEnumerable<ProfileCommon>();
foreach(var user in userlist)
{
myProfileList.Add(Profile.GetProfile(user));
}
profilelist.datasource = myProfileList;
你做错了。 正如Etch所说,中继器用于事物列表。 GetProfile 不返回列表。
最好将控件放在面板中,然后在数据绑定事件的"列表"控件中分配它们。
换句话说,这里不需要中继器。
我忘了发布这个,但对于任何需要做类似事情的人来说,这里的代码是有效的
protected void Page_Load(object sender, EventArgs e)
{
List<MembershipUserCollection> usernamelist = new List<MembershipUserCollection>();
usernamelist.Add(Membership.GetAllUsers());
List<ProfileCommon> myProfileList = new List<ProfileCommon>();
foreach (MembershipUser user in usernamelist[0])
{
string username = user.ToString();
myProfileList.Add(Profile.GetProfile(username));
Label emailLabel = profilelist.FindControl("EmailLabel") as Label;
}
}
目前,它显示大约15个用户名,并提供链接到每个用户各自配置文件的能力。