在转发器中设置Dropdownlist的Selectedindex / selectedvalue不起作用

时间:2010-08-16 12:32:36

标签: asp.net

我有一个带DropDownList的转发器。我在itembound事件中设置了这个列表的数据源,并设置了selectedindex。当我调试selectedindex被设置,但是当页面完成加载所有项目时,选择默认项目。

这是我的代码:

 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        var ddl = (DropDownList)e.Item.FindControl("DataFeedItems");
        ddl.DataSource = FilterDropDownData();
        ddl.DataTextField = "ColumnName";
        ddl.DataValueField = "ColumnName";
        ddl.DataBind();
        ddl.SelectedValue = "Select";
        ddl.SelectedIndex = 28;
    }
  protected DataTable FilterDropDownData()
    {
        var importedFeedColums = I make the table here;
        DataRow newRow = importedFeedColums.NewRow();
        newRow[0] = "Selecteren";
        importedFeedColums.Rows.Add(newRow);
        return importedFeedColums;
    }

我Als尝试使用Databound甚至下拉列表,但这也没有用:

    protected void DataFeedItems_DataBound(object sender, System.EventArgs e)
    {
        var ddl = (DropDownList) (sender);
        ddl.SelectedValue = "Selecteren";
        ddl.Items[28].Selected = true;

    }

 <asp:Repeater ID="Repeater1" runat="server" 
            onitemdatabound="Repeater1_ItemDataBound">
            <ItemTemplate>
                <li>
                <label><%# DataBinder.Eval(Container.DataItem, "ColumnName") %></label>                       
                    <asp:DropDownList ID="DataFeedItems" ClientIDMode="Static" runat="server" DataSource='<%# FilterDropDownData() %>'
                        DataTextField="ColumnName" DataValueField="ColumnName"   OnDataBound="DataFeedItems_DataBound" >
                    </asp:DropDownList>
                    <input id="Hidden1" runat="server" clientidmode="Static" type="hidden" value='<%# DataBinder.Eval(Container.DataItem, "ColumnName") %>' />
                </li>
            </ItemTemplate>
        </asp:Repeater>

当我发布表单时,我可以获得每个DropDownList的selectedvalue和text。我做错了什么

2 个答案:

答案 0 :(得分:1)

FilterDropDownData()返回什么?

你试过这个吗?

 ddl.Items.FindByValue("Selecteren").Selected = true;

 ddl.Items.FindByText("Selecteren").Selected = true;

答案 1 :(得分:1)

此方法将失败,因为下拉列表不能选择多个项目。设置“Selected = true”将完全相同。

只有使用DropDownList的SelectedIndex属性才能将项目设置为选中。

例:ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue("Selecteren"));