c# - 在 Repeater 中填充 DropDownList 不起作用

标签 c# .net asp.net data-binding repeater

我正在尝试在转发器中填充下拉列表,但不是很成功。 我可能使用了错误的 EventArgs e

这是我的 aspx 代码:

        <asp:Repeater runat="server" id="criteriaScore">
            <HeaderTemplate>
              <ul>         
                <li class="header"><span class="item">Kriterie</span><span class="value">Poeng</span><span class="description">Beskrivelse</span></li>
            </HeaderTemplate>
            <ItemTemplate>
                <li>
                    <span class="item"> <%# Eval("criteria") %>:</span>
                    <asp:DropDownList id="ddlRating" runat="server" autopostback="true" enableviewstate="false"></asp:DropDownList>
                    <span class="value score<%# Eval("lvl") %>" title="<%# Eval("description") %>"> </span>
                </li>
            </ItemTemplate>
            <FooterTemplate>
                </ul>  
            </FooterTemplate>
        </asp:Repeater>

以及背后的代码:

    protected void criteriaScore_ItemDataBound(object sender, DataListCommandEventArgs e)
    {
        DropDownList ddl = (DropDownList)e.Item.FindControl("ddlRating");

        for(int i=1; i > 5; i++)
        {
            ddl.Items.Add(new ListItem(i.ToString(), i.ToString()));
        }
    }

有人可以指导我走上正确的道路吗? :)

最佳答案

除此问题的其他答案外,ItemDataBound 事件不应用于绑定(bind)控件数据,应在控件级别执行此操作。

在您的下拉列表中定义数据绑定(bind)事件:

<asp:DropDownList runat="server" ID="ddlYourDDL"  OnDataBinding="ddlYourDDL_DataBinding">

然后实现OnDataBinding事件:

protected void ddlYourDDL_DataBinding(object sender, System.EventArgs e)
{
    DropDownList ddl = (DropDownList)(sender);
    for (int i = 1; i < 5; i++)
    {
         ddl.Items.Add(new ListItem(i.ToString(), i.ToString()));
    }

    // Now that the items are all there, set the selected property
    ddl.SelectedValue = Eval("selectedfieldname").ToString();
 }

您应该尝试在控件级别进行所有数据绑定(bind),而不是搜索内容并让您的网格必须知道它包含的内容。每个控件都可以自行处理 ;) 这样可以更轻松地向模板添加和删除控件并隔离这些更改。

关于c# - 在 Repeater 中填充 DropDownList 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1432790/

相关文章:

c# - 在运行时将 TypeConverter 属性添加到枚举

c# - Visual Studio C#、WPF 控件

c# - 为什么我的列表显示每个对象都是 "System.Collections.Generic.List` 1[System.DateTime]”

c# - 在运行时隐藏标签

asp.net - 有没有一个工具可以正确组织asp文件的标签属性?

c# - 如何做二维矢量运动

c# - 要从工厂返回 "manual override"值,是检查 null 还是 bool 开关更好?

.net - MySQL - 无法序列化日期/时间值

c# - System.Windows.Size 和 System.Drawing.Size 有什么区别?

c# - LINQ to SQL 从字符串创建查询