Far*_*nha 30 asp.net data-binding list listitem drop-down-menu
我刚刚遇到这种奇怪的事情,我期望以不同的(逻辑的)方式工作,但事实并非如此.这是一个错误还是一个"功能"?
所以有一个DropDownList,我在Listbehind中使用ListItem列表填充.每个新的ListItem都有2个参数,根据intellisense提供的文档,它们对应于它的文本和值:
List<ListItem> users = new List<ListItem>();
foreach (SubscriptionUser su in subscriptionDetails.UserList)
{
users.Add(new ListItem(su.FirstName + " " + su.LastName, su.EmailAddress));
}
ddlPrimaryContact.DataSource = users;
ddlPrimaryContact.DataBind();
Run Code Online (Sandbox Code Playgroud)
现在,有人可以解释为什么数据绑定DropDownList将Text和Value设置为完全相同(ListItem文本)而不是使用ListItem.Text作为Text和ListItem.Value作为值?
哎呀!http://www.freeimagehosting.net/uploads/fe65d0e7d5.jpg
或者我做错了什么?
Mat*_*ser 59
嗨,当数据绑定(到任何东西)时,您需要设置DropDownList的DataTextField和DataValueField.在您的情况下,您应该使用以下代码
List<ListItem> users = new List<ListItem>();
foreach (SubscriptionUser su in subscriptionDetails.UserList)
{
users.Add(new ListItem(su.FirstName + " " + su.LastName, su.EmailAddress));
}
ddlPrimaryContact.DataTextField = "Text";
ddlPrimaryContact.DataValueField = "Value";
ddlPrimaryContact.DataSource = users;
ddlPrimaryContact.DataBind();
Run Code Online (Sandbox Code Playgroud)
Can*_*var 10
您应该将下拉列表绑定为:
ddlPrimaryContact.DataSource = users;
ddlPrimaryContact.DataTextField = "Value";
ddlPrimaryContact.DataValueField = "Text";
ddlPrimaryContact.DataBind();
Run Code Online (Sandbox Code Playgroud)
如果你问为什么,据我所知,数据绑定控件通过为数据源集合中的每个项调用ToString方法来获取文本和值(如果它们不像上面那样提供).因此集合中的每个ListItem都通过ToString方法返回它的Text属性.
或者,您也可以这样绑定它.(假设您可以向SubscriptionUser添加一个名为FullName的readOnly属性(返回su.FirstName +""+ su.LastName)
ddlPrimaryContact.DataSource = subscriptionDetails.UserList;
ddlPrimaryContact.DataBind();
Run Code Online (Sandbox Code Playgroud)
然后,在你的ASPX页面中放置:
<asp:DropDownList id="ddlPrimaryContact" runat="server" DataTextField="FullName" DataValueField="EmailAddress" />
Run Code Online (Sandbox Code Playgroud)
你可以直接将listitem添加到下拉列表..
List<ListItem> users = new List<ListItem>();
for (int count = 0; count < 10; count++)
{
ListItem li = new ListItem("List " + count.ToString(), count.ToString());
ddl.Items.Add(li);
}
Run Code Online (Sandbox Code Playgroud)
有一种方法可以将ListItem项添加到DropDownList,并使.NET自动将ListItem的Text与DropDownList的Text匹配,并且Value的值相同:
List<ListItem> users = new List<ListItem>();
// fill in list
ddlUsers.Items.AddRange(users.ToArray());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73310 次 |
| 最近记录: |