转发器控件中下拉列表的选定值 - 使用预定义项

时间:2012-03-13 15:41:51

标签: c# asp.net

我在具有预定义项目的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>

不幸的是,这不起作用,任何想法?

3 个答案:

答案 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"/>