Что происходит в событии OnDataBound Gridview?

У меня есть Gridview, где я проверяю данные некоторых определенных ячеек во время события OnDataBound, чтобы вызвать какое-то действие.

        public void PaintRows_OnRowDataBound(object sender, GridViewRowEventArgs e)
    {

        if (e.Row.Cells[0].Text == "0")
        {
            //first condition
        }
        else if (e.Row.Cells[0].Text == "1" && e.Row.Cells[12].Text.Length != 6)
        {
            //second condition
        }
        else
        {
            //launch the action 
        }
    }

Несмотря на то, что все условия выполнены, всегда запускается действие, запускаемое оператором else. Я не вижу никакой логики, объясняющей это. Я узнал, что перебирая строки, событие связывает и заголовки, поэтому я проверяю этот случай в условиях. Но есть ли какие-то другие невидимые строки, которые я пропускаю и которые приводят к тому, что условие else достигается? Надеюсь, я ясно изложил свою мысль. Мартин


person Barnabeck    schedule 13.12.2015    source источник


Ответы (1)


Вы упоминаете, что проверяете, чтобы исключить строку, если это строка заголовка, но не указали, каков ваш фактический условный тест для этого.

Чтобы выполнить предварительную фильтрацию только для строк данных, вы должны применить это условие:

if(e.Row.RowType == DataControlRowType.DataRow)

person jjt    schedule 13.12.2015
comment
Прохладный. Это сделало это! Я даже не знал, что существуют разные типы строк. Теперь это имеет смысл. Мартин - person Barnabeck; 13.12.2015