как удалить элемент выпадающего списка, ограниченный данными, при загрузке страницы?

у меня есть раскрывающийся список, данные которого ограничены таблицей, и я хочу удалить из него элемент при загрузке страницы, но проблема в том, что из этого фрагмента кода ничего не происходит:

при загрузке страницы:

protected void Page_Load(object sender, EventArgs e)
{
    ListItem itemToRemove = DropDownList1.Items.FindByText("compiler"); //just want to remove this value
    if (itemToRemove != null)
    {
        DropDownList1.Items.Remove(itemToRemove);
    }
}

**dropdownlist code on aspx page**:

<asp:DropDownList ID="DropDownList1"  AppendDataBoundItems="true" runat="server" DataSourceID="SqlDataSource1" DataTextField="qpname" DataValueField="qpname" Height="16px" Width="116px" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="True">
  <Items>
   <asp:ListItem Text="Select" Value="" />
   </Items>
</asp:DropDownList>

исходный код sqldata на странице aspx:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:projectConnectionString %>" SelectCommand="SELECT [qpname] FROM [A1_quespapers]"></asp:SqlDataSource>

Примечание. В раскрывающемся списке отображаются все ограниченные значения, включая значение, которое нужно удалить (компилятор) — изображение здесь


person Jai hind    schedule 01.12.2016    source источник
comment
попробуйте поместить свой код в !isPostback   -  person The Blue Shirt Developer    schedule 02.12.2016


Ответы (2)


Вы должны использовать AppendDataBoundItems="False" и установить DataSource в событии PageLoad. Далее вы сможете удалить свой Item

Измените DropDownList вот так

<asp:DropDownList ID="DropDownList1"  AppendDataBoundItems="false" runat="server"  DataTextField="qpname" DataValueField="qpname" Height="16px" Width="116px" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="True">

Добавить источник данных и удалить элемент, используя метод FindByText()

protected void Page_Load(object sender, EventArgs e)
{


    DropDownList1.DataSource = SqlDataSource1;
    DropDownList1.DataBind()

    ListItem itemToRemove = DropDownList1.Items.FindByText("compiler");   
    if (itemToRemove != null)
    {
        DropDownList1.Items.Remove(itemToRemove);
    }
}
person M. Wiśnicki    schedule 01.12.2016
comment
или установите DropDownList1.DataSource = null;, а затем переназначьте, если вы хотите привязаться к другому источнику данных. - person MethodMan; 01.12.2016

Вы можете попробовать удалить на мероприятии PreRender.

protected void Page_PreRender(object sender, EventArgs e)
{
    ListItem itemToRemove = DropDownList1.Items.FindByText("compiler"); //just want to remove this value
    if (itemToRemove != null)
    {
        DropDownList1.Items.Remove(itemToRemove);
    }
}
person Win    schedule 01.12.2016