Member 12336474 Ответов: 1

Сравнить 2 таблицы столбцы и цвет текста, если он отличается


Я хочу сравнить два столбца gridview и раскрасить только те, которые отличаются.

То, что я попробовал ниже, просто окрашивает весь столбец в ноль без совпадения.

Что я уже пробовал:

protected void GridView1_RowCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
       {
           if (e.Row.RowType == DataControlRowType.DataRow)
           {

               if (DataBinder.Eval(e.Row.DataItem, "RockwellPartno") != DataBinder.Eval(e.Row.DataItem, "Part_Number"))
               {
                   e.Row.Cells[0].ForeColor = System.Drawing.Color.Red;
               }
           }
       }

1 Ответов

Рейтинг:
10

an0ther1

Свойство e. Row. DataItem недоступно до тех пор, пока не будет запущено событие RowDataBound, из памяти оно запускается после события RowCreated

Если вы отладите это, то, вероятно, обнаружите, что эти значения равны нулю, попробуйте сделать следующее;
а) добавьте точку останова в обработчик событий RowCreated
Б) когда вы находитесь в обработчике событий, откройте свое непосредственное окно в Visual Studio и введите следующее;

? DataBinder.Eval(e.Row.DataItem, "RockwellPartno")

Это скажет вам, каково значение вашего выражения - если оно равно null & другое выражение также равно null, то это ваша проблема. Нули не равны, следовательно, выражение ложно.

Из памяти, чтобы получить доступ к значениям в datagrid, вам нужно выполнить одно из следующих действий;
а) доступ к внутреннему текстовому значению поля в коде позади него;
e.Row.Cells[0].Text


б) добавьте необходимые поля в свойство DataKeyNames вашей сетки данных на странице ASPX ,а затем получите доступ к значениям в вашем коде, используя следующее
GridView1.DataKeys[e.Row.RowIndex]["RockwellPartno"].ToString()


Используйте свой отладчик и прочитайте документацию.
Непосредственные и локальные окна в вашем отладчике покажут вам, к каким значениям у вас есть доступ ,и позволят вам выяснить, что вы можете и не можете сделать.
MSDN содержит буквально тысячи примеров ,и документация, как правило, очень подробная. Ссылка ниже-это документация MSDN для элемента управления GridView

Класс GridViewRow (System .Web. UI.WebControls)[^]

с уважением