Как я могу условно связать строку Gridview внутри события RowDatabound?
-
27-10-2019 - |
Вопрос
У меня есть 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; }
Но по большей части я думаю, что вы должны только оценить то, что вы действительно хотите, и оставить бизнес -логику такой из -за обязательных событий.