Как вы можете сделать собственный вывод для привязанного представления сетки? Т.е. У меня есть логическое поле в базе данных, вместо того, чтобы писать True, как я получаю из ‹% # DataBinder.Eval (Container.DataItem," BoolField ")%>, я бы хотел поставить изображение (например, галочку) в виде сетки. Это возможно?
Выходное изображение в сетке данных
Ответы:
Прежде всего, Eval is Evil. Решение с eval есть, но я специально его пропущу.
Есть еще 2 решения. Вы можете использовать ImageField и формировать данные для передачи правильного URL-адреса изображения в специальном свойстве, которое вы должны указать в свойстве DataImageUrlField ImageField.
Другое решение - добавить поле шаблона с элементом управления Image и обработать событие RowDataBound, получить данные для строки из аргументов события. E.Row.DataItem привести его к типу элементов в вашем источнике данных и извлечь логическое значение. . Затем вы можете использовать FindControl для получения элемента управления Image и определения его свойств. Что-то вроде этого:
protected void Page_Load(object sender, EventArgs e)
{
gvTest.DataSource = new bool[] { true, false };
gvTest.DataBind();
}
protected void gvTest_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Image imgBool = (Image)e.Row.FindControl("imgBool");
bool data = (bool)e.Row.DataItem;
if (data)
{
imgBool.ImageUrl = "/images/true.jpg";
imgBool.AlternateText = "This is true";
}
else
{
imgBool.ImageUrl = "/images/false.jpg";
imgBool.AlternateText = "This is false";
}
}
}
Это может показаться трудоемким, но помните, что вы можете использовать этот же обработчик для работы со всеми столбцами в вашей сетке безопасным способом.
Отображение изображений в столбце GridView