我想将dropdownlist绑定到List<MyIem>
,
代码背后。
<asp:DropDownList ID="listCategories" runat="server" Height="20px" CssClass="CategoryDropList" SelectedValue='<%# Bind("ParentId") %>' AutoPostBack="false" Width="300px">
不使用ObjectDataSource!
如何将其绑定到下拉列表?在什么情况下?
SelectedValue='<%# Bind("ParentId") %>'
也应该有效! (我的意思是下拉列表绑定应该在此之前发生!)
答案 0 :(得分:4)
做了一个示例,它将设置DataBound事件中的下拉列表
这是标记
使用ddl的方法是在DataBound事件期间使用findcontrol()找到它
当您在DataBound事件中拥有控件时,您还可以将下拉列表绑定到List&lt;&gt;
希望这会有所帮助。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:FormView ID="FormView1" runat="server" ondatabound="FormView1_DataBound">
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>One</asp:ListItem>
<asp:ListItem>Two</asp:ListItem>
<asp:ListItem>Three</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:FormView>
</form>
</body>
</html>
这是背后的代码:
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<string> list = new List<string>();
list.Add("Some");
list.Add("Other");
FormView1.DataSource = list; //just to get the formview going
FormView1.DataBind();
}
protected void FormView1_DataBound(object sender, EventArgs e)
{
DropDownList ddl = null;
if(FormView1.Row != null)
ddl = (DropDownList) FormView1.Row.FindControl("DropDownList1");
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue("Two"));
}
}
}
答案 1 :(得分:3)
假设有效值在数据库中,您可以使用其他DataSource填充DropDownList。看看这个视频:
http://msdn.microsoft.com/en-us/data/cc546554.aspx
它使用的是EntityDataSource而不是ObjectDataSource,但原则仍然有效。
如果您想要null的“(none)”类型选项,请参阅此页面上的“在模板字段中转换空”部分:
http://msdn.microsoft.com/en-us/library/ms366709.aspx
具体做法是:
<asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource2"
DataTextField="Name" DataValueField="EmployeeID"
SelectedValue='<%# Bind("ReportsTo") %>' AppendDataBoundItems="True">
<asp:ListItem Selected="True" Value="">(none)</asp:ListItem>
</asp:DropDownList>
注意“AppendDataBoundItems”属性和“asp:ListItem”元素。
答案 2 :(得分:0)
<EditItemTemplate>
<asp:DropDownList ID="ddlStream" runat="server" SelectedValue='<%# Bind("Stream") %>'>
<asp:ListItem>Common</asp:ListItem>
<asp:ListItem>Mechanical</asp:ListItem>
<asp:ListItem>Electronics</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label runat="server" id="something" text='<%# Eval("Stream")%>'/>
</ItemTemplate>
希望这有助于你。