asp.net Gridview ImageField альтернативное изображение

У меня есть ниже gridview с полем изображения, связанным с номером UserID. Как я могу сделать, если изображение не существует в указанном поле старше, чтобы получить стандартную альтернативную картинку?

                <ItemTemplate>
                    <asp:Image ID="MainPic" runat="server" 
                        ImageUrl='<%# GetImageUrl(Eval("PerfilId") as string)%>' />
                </ItemTemplate>

..

    protected string GetImageUrl(string dbImgURL)
    {
        if (File.Exists(dbImgURL))
        {
            return dbImgURL;
        }
        else
        {
            return "AdminFotoUser/UserPics/BGP1.png";
        }
    }

1 ответ

Вы можете проверить путь к изображению в событии onRowDataBound GridView и изменить его на общее изображение, если файл не существует. используя System.IO;

if (File.Exists(path)) 
                {
                    Console.WriteLine("file exists");
                }

else // Найти элемент управления и привязать его к общему изображению

ИЛИ ЖЕ

Вы могли бы переделать вашу сетку по-другому: - вместо использования столбца поля изображения, вы могли бы использовать столбец шаблона следующим образом: Код:

<asp:TemplateField>
    <ItemTemplate>
        <asp:Image runat="server" ID="myImg"
            ImageUrl='<%# GetImageUrl(Eval(col2) as string) %>' />
    </ItemTemplate>
</asp:TemplateField>

Затем в своем коде вы создали функцию, которая возвращает правильный URL-адрес изображения: Код:Обновленный ответ

//Send Image name from database (DataGrid) as dbImgURL
protected string GetImageUrl(string dbImgURL)
{
   if (File.Exists(dbImgURL)) 
    {
       return dbImgURL;          
    }
   else
    {
       return "Green.gif";
    }
}
Другие вопросы по тегам