我在具有预定义项目的ASP.NET页面中的转发器控件中有一个DropDownList。在将数据绑定到转发器控件之后,我该如何设置它的选定值?
例如,我有这段代码:
<asp:DropDownList ID="cboType" runat="server">
<asp:ListItem Text="Communication" Value="Communcation" />
<asp:ListItem Text="Interpersonal" Value="Interpersonal" />
</asp:DropDownList>
因为DropDownList控件没有SelectedValue前端属性,所以我无法在控件级别设置它。相反,您必须使用列表项的selected属性。理想的是:
<asp:DropDownList ID="cboType" runat="server" SelectedValue='<%# Eval("Type_Of_Behavior") %>'>
<asp:ListItem Text="Communication" Value="Communcation" />
<asp:ListItem Text="Interpersonal" Value="Interpersonal" />
</asp:DropDownList>
不幸的是,这不起作用,任何想法?
答案 0 :(得分:3)
使用Pankaj Garg的代码(谢谢!)我设法写出了选择正确值的方法。我无法将其标记为答案,因为答案是选择静态值,而不是来自数据库的静态值。这是功能:
protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DropDownList cbo = (DropDownList)e.Item.FindControl("cboType");
Behaviour b = (Behaviour)e.Item.DataItem;
for (int i = 0; i < cbo.Items.Count; i++)
{
if (b.Type_of_Behaviour == cbo.Items[i].Value)
cbo.Items[i].Selected = true;
else
cbo.Items[i].Selected = false;
}
}
}
感谢所有帮助过的人。
答案 1 :(得分:2)
在运行时您可以使用
OnItemDataBound
的Repeater,如下所示。
示例HTML
<asp:Repeater ID="rpt" runat="server" OnItemDataBound="YourhandlerName" >
</asp:Repeater>
OnItemDataBound
事件处理程序protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DropDownList DropDownID = (DropDownList)e.Item.FindControl("DropDownID");
int ItemNo = ((YourClassName)e.Item.DataItem).Yourproperty;
DropDownID.Items[ItemNo].Selected = true;
}
}
答案 2 :(得分:0)
您正在寻找的属性是ListItem
本身的一部分,而不是众多类型的列表 - 也就是说,您可以通过设置{{3来指定项目来选择在那个项目:
<asp:ListItem Text="Interpersonal" Value="Interpersonal" Selected="True"/>