2015-09-01 8 views
1

У меня есть база данных SQL, которая содержит шестнадцатеричные коды для цветов. Я хочу изменить каждую строку сетки в соответствии с шестнадцатеричным кодом. Одна строка содержит команду (On DB), год, город, стадион, Fore_Color, Back_Color. Я попытался использовать Eval, чтобы получить заданный цвет для каждой строки, но не смог этого сделать. Я использую C#, asp.net.GridView Цвет из базы данных

Для примера, почему это не работает ?:

e.Row.BackColor = Color.FromKnownColor(System.Drawing.ColorTranslator.FromHtml(DataBinder.Eval(e.Row.BackColor,"Back_Color"))); 

ИЛИ ЭТО:

e.Row.BackColor = ColorTranslator.FromHtml(Eval("Back_Color").ToString()); 
    e.Row.ForeColor = ColorTranslator.FromHtml(Eval("Front_Color").ToString()); 

Это дает следующее сообщение об ошибке: методы, такие как Databinding Eval(), XPath() и Bind() может быть только используется в контексте управления databound.

Я попробовал сказать OnRowDataBound для gridview, но это не сработало.

ответ

0

Используйте RowDataBound событие GridView и ColorTranslator.FromHtml:

protected void GrdidView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRow row = ((DataRowView)e.Row.DataItem).Row; 
     Color backColor = ColorTranslator.FromHtml(row.Field<string>("Back_Color")); 
     e.Row.BackColor = backColor; 
     Color frontColor = ColorTranslator.FromHtml(row.Field<string>("Front_Color")); 
     e.Row.ForeColor = frontColor; 
    } 
} 

Если вы используете другой DataItem взглянуть на него в отладчик и изменить его соответствующим образом.

+0

Большое вам спасибо! Ты буквально спас мне жизнь! –

+1

@EmirArditi: Добро пожаловать. Не забудьте принять ответ, если на ваш вопрос ответили. –

Смежные вопросы