Как я могу условно связать строку gridview внутри события RowDataBound? - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть 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

1 Ответ

1 голос
/ 02 декабря 2011

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

например,

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; }

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

...