代码之家  ›  专栏  ›  技术社区  ›  Ivo

在不工作的中继器中设置Dropdownlist的Selectedindex/selectedvalue

  •  4
  • Ivo  · 技术社区  · 14 年前

    我有一个中继器里面有一个下拉列表。我在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;
        }
    

        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和文本。我做错什么了

    2 回复  |  直到 14 年前
        1
  •  1
  •   Daniel Dyson    14 年前

    FilterDropDownData()返回什么?

    你试过这个吗?

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

     ddl.Items.FindByText("Selecteren").Selected = true;
    
        2
  •  1
  •   Gururaj Radhakrishna    11 年前

    此方法将失败,因为下拉列表不能选择多个项目。而设置“Selected=true”也会做同样的事情。

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