2011-08-15 1 views
1

У меня есть это, что получает связанный в моем коде позади:Как изменить элементы в моем DropDownList в ASP.NET

<asp:DropDownList id="ddlPopulation" runat="server" DataTextField="population" DataValueField="pid" AppendDataBoundItems="True"> 
<asp:ListItem>Default</asp:ListItem> 

Как изменить элементы списка в коде позади? Я хочу сделать Html_Decode и Trim на них, прежде чем они будут переданы пользователю?

Код DataBind является:

StringBuilder sql = new StringBuilder(); 

    // Define sql 
    sql.Append("SELECT DISTINCT datasource "); 
    sql.Append("FROM meta "); 
    sql.Append("WHERE datasource != '' "); 
    sql.Append("ORDER BY datasource ASC "); 

    IDataReader reader = SqlHelper.GetDataReader(sql.ToString()); 

    ddlDatasources.DataSource = reader; 
    ddlDatasources.DataBind(); 
+0

Что с использование kooky stringbuilder? Вы ничего не набираете, вы должны просто использовать строку, а не конкатенацию? – jim

ответ

6

Вы можете подписаться на событие DataBound в DropDownList и сделать что-то вроде следующего:

<asp:DropDownList id="ddlPopulation" runat="server" DataTextField="population" DataValueField="pid" AppendDataBoundItems="True" OnDataBound="ddlPopulation_DataBound"> 
    </asp:DropDownList> 

и

protected void ddlPopulation_DataBound(object sender, EventArgs e) { 
    foreach(ListItem Item in ddlPopulation.Items){ 
    Item.Text = Server.HtmlDecode(Item.Text.Trim()); 
    } 
} 
+4

К сожалению, DropDownList не имеет события ItemDataBound –

+0

Перегрузка для 'Population_DataBound' не соответствует делегату 'System.EventHandler', что это? – cdub

+0

Добавлено определение разметки для элемента управления и сделало обработчик события защищенным. Не знаете, почему вы получаете эту ошибку. Если вы продолжите получать, можете ли вы опубликовать, как выглядит ваш модифицированный код? –