asp.net - Repeater中DropDownList的SelectedValue

标签 asp.net data-binding repeater asp.net-3.5 selectedvalue

如何在中继器内设置 dropDownList 的选定项?

在后面的代码中,repeater绑定(bind)到repeaterData DataTable,dropDownList绑定(bind)到dropDownList DataTable。我需要将 DropDownList 的 SelectedValue 属性设置为 repeaterData 表中字段的值。

这是我尝试过的:

<asp:Repeater runat="server" ID="myRepeater>
<ItemTemplate>
    <asp:DropDownList runat="server" CssClass="fullSelect" ID="degree_dropdown"
            AppendDataBoundItems="true" 
            selectedValue='<%#DataBinder.Eval(Container.DataItem,"degreeCode")%>'>
                  <asp:ListItem Text="Select Degree" />
     </asp:DropDownList>
</ItemTemplate>
</asp:Repeater>

填充中继器的代码:
myRepeater.DataSource = myRepeaterData; //myRepeaterData is a datatable
myRepeater.DataBind();

填充下拉列表的代码:
protected void educationPopup_repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            DropDownList degree_dropdown = e.Item.FindControl("degree_dropdown") as DropDownList;
            if (degree_dropdown != null)
            {
                degree_dropdown.DataSource = degrees; //a datatable
                degree_dropdown.DataTextField = "degree";
                degree_dropdown.DataValueField = "code";
                degree_dropdown.DataBind();
            }
}

最佳答案

你快到了。你只需要投DataItemDataRowView , 并将其分配给 DropDownList像这样 -

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || 
       e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var degree_dropdown = e.Item.FindControl("degree_dropdown") as DropDownList;
        string degreeCode = (string) ((DataRowView) e.Item.DataItem)["degreeCode"];

        if (degree_dropdown != null)
        {
            degree_dropdown.DataSource = degrees; //a datatable
            degree_dropdown.DataTextField = "degree";
            degree_dropdown.DataValueField = "code";
            degree_dropdown.DataBind();

            if (degree_dropdown.Items.FindByValue(degreeCode) != null)
                degree_dropdown.SelectedValue = degreeCode;
        }
    }
}

关于asp.net - Repeater中DropDownList的SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16801364/

相关文章:

c# - VS2010中的调试问题

c# - 如何将字符串属性绑定(bind)到 ToolStripTextBox?

c# - 如果 DataSource 不包含任何项目,我如何在 ASP.NET C# 中隐藏转发器?

c# - ELMAH 像 NLog 一样是异步的吗?

asp.net - 匿名访问(IIS)和SQL Server

asp.net - HTTPS 与 Visual Studio 的内置 ASP.NET 开发服务器

wpf - MVVM:我应该将文本框直接绑定(bind)到模型还是应该先创建一个完整的属性?

c# - WPF 2 ListView 简单的选定项数据绑定(bind)

c# - 如何在代码隐藏 C# 中将参数从 Repeater 传递给 UserControl

c# - 使用 javascript 进行 Asp.Net 中继器控制