gridview中显示图像的三元运算符

时间:2016-12-12 13:53:33

标签: c# asp.net gridview

我想在值为null时显示文件夹中的虚拟图像。意味着当ImageUrl='<%# "~/ProductImageHandler.ashx?Id="+ Eval("Id") %>'具有空值时,我想从我将放置在项目中的任何文件夹中显示虚拟图像。那我该怎么做呢

 <asp:Image ID="imgProduct" Width="200px" runat="server"  CommandArgument='<%#Eval("ItemId")%>' 
ImageUrl='<%# "~/ProductImageHandler.ashx?Id="+ Eval("Id") %>'  CommandName="ViewProductImage"/>

ProductImageHandler.cs文件

   public class ProductImageHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            int itemID = 0;
            int.TryParse(context.Request.QueryString["Id"].ToString(), out itemID);
            if (itemID > 0)
            {
                context.Response.ContentType = "image/jpeg";
                Stream strm = ShowImage(itemID);
                byte[] buffer = new byte[4096];
                int byteSeq = strm.Read(buffer, 0, 4096);

                while (byteSeq > 0)
                {
                    context.Response.OutputStream.Write(buffer, 0, byteSeq);
                    byteSeq = strm.Read(buffer, 0, 4096);
                }
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Zoneid"></param>
        /// <returns></returns>
        private Stream ShowImage(int itemID)
        {
            WmsItemListDAC _WmsItemListDAC = null;
            DataTable dtProduct = new DataTable();
            if (_WmsItemListDAC == null)
                _WmsItemListDAC = new WmsItemListDAC();
            if (dtProduct == null)
                dtProduct = new DataTable();

            dtProduct = _WmsItemListDAC.GetProductImageByItemID(itemID);
            if (dtProduct.Rows[0]["PICTURE"] != null)
            {
                byte[] image = (byte[])dtProduct.Rows[0]["PICTURE"];
                return new MemoryStream(image);
            }
            else
            {
                return null;
            }
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

你可以这样做:

<asp:Image ID="imgProduct" runat="server" ImageUrl='<%# Convert.ToInt32(Eval("Id")) > 0 ? "~/ProductImageHandler.ashx?Id="+ Eval("Id") : "~/dummy.jpg" %>' />

Id大于零时,它会将ImageUrl设置为处理程序。如果没有显示假人。

如果Id并不总是一个整数,你可以检查空字符串。

<asp:Image ID="imgProduct" runat="server" ImageUrl='<%# !string.IsNullOrEmpty(Eval("Id").ToString()) ? "~/ProductImageHandler.ashx?Id="+ Eval("Id") : "~/dummy.jpg" %>' />