Как я могу условно связать строку Gridview внутри события RowDatabound?

StackOverflow https://stackoverflow.com/questions/8349740

Вопрос

У меня есть Gridview, для отображения данных платежей клиентов. По умолчанию я изменяю отображение любых строк, содержащих прошлые клиенты, используя некоторые проверки, которые легко доступны в событии Rowdatabound. Я хотел бы добавить опцию, чтобы отфильтровать данные, чтобы показать только строки, которые являются или не прошли, на основе ввода. Как лучше всего это сделать?

Я думаю о чем -то вроде:

protected void gvTenantList_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (null != e.Row.DataItem)
    {
        DataRowView rowView = (DataRowView)e.Row.DataItem;
        if (hsPastDueLeases.Contains((int)rowView["LeaseID"]))
        {
            e.Row.CssClass += " pinkbg";
            if (showCurrentOnly) //code to prevent showing this row
        }
        else if (showPastDueOnly) //code to prevent showing this row
    }
}

По сути, мне нужно знать, что принадлежит //code to prevent showing this row

Это было полезно?

Решение

Почему бы вам не сделать фильтрацию перед тем, как сделать привязку?

например

gvTenantList.DataSource = data.Where(a=> !hsPastDueLeases.Contains(a.LeaseID)); // Of course you have a datatable so this is not 100% as easy as this

Или вы можете установить строку, чтобы быть невидимым, используя

e.Row.Visible = false;


protected void gvTenantList_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (null != e.Row.DataItem)
    {
        DataRowView rowView = (DataRowView)e.Row.DataItem;
        if (hsPastDueLeases.Contains((int)rowView["LeaseID"]))
        {
            e.Row.CssClass += " pinkbg";
            e.Row.Visible = !showCurrentOnly;
        }
        else if (showPastDueOnly){ //code to prevent showing this row
            e.Row.Visible = false;
        }
    }
}

В качестве альтернативы вы можете добавить CSSClass под названием «Скрытый», а в CSS

.hidden { display: none; }

Но по большей части я думаю, что вы должны только оценить то, что вы действительно хотите, и оставить бизнес -логику такой из -за обязательных событий.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top