无法在表单视图中显示图像

问题描述 投票:0回答:1

我有未绑定的字段并为其分配文件ID,我甚至尝试分配URL但是这不起作用,请看下面的设计和代码,请让我知道哪里出错了。

<px:PXFormView runat="server" ID="frmImage2" DataSourceID="ds" DataMember="IconImage" SkinID="Preview">
                <Template>
                    <px:PXLayoutRule ID="PXLayoutRule18" runat="server" StartColumn="true" />
                    <px:PXImageUploader runat="server" DataField="UsrKWJMThumbnailURL" AllowUpload="false" DataMember="IconImage" SuppressLabel="True" ID="imgViewImage12" Height="150px" Width="150px" />
                </Template>
    </px:PXFormView>

     public PXSelect<AMProdItem> IconImage;

        public virtual void iconImage()
        {
            foreach (AMProdItem item in Base.ProdItemRecords.Select())
            {
                AMProdItemExt extItems = item.GetExtension<AMProdItemExt>();

                if (extItems != null)
                {
                    if (extItems.UsrKWJMSerialNbr != null)
                    {
                        InfoSmartSearch.InfoINItemLotSerialImage infoItemLotSerialImg = PXSelectReadonly<InfoSmartSearch.InfoINItemLotSerialImage, Where<InfoSmartSearch.InfoINItemLotSerialImage.lotSerialNbr, Equal<Required<InfoSmartSearch.InfoINItemLotSerialImage.lotSerialNbr>>>>.Select(Base, extItems.UsrKWJMSerialNbr);

                        if (infoItemLotSerialImg != null)
                        {
                            if (!string.IsNullOrEmpty(infoItemLotSerialImg.UsrIconImageUrl))
                            {
                                NoteDoc noteDoc = PXSelectReadonly<NoteDoc, Where<NoteDoc.noteID, Equal<Required<NoteDoc.noteID>>>>.Select(Base, infoItemLotSerialImg.NoteID);

                                if (noteDoc != null)
                                {
                                    UploadFile uploadFile = PXSelectReadonly<UploadFile, Where<UploadFile.fileID, Equal<Required<UploadFile.fileID>>>>.Select(Base, noteDoc.FileID);

                                    if (uploadFile != null)
                                    {
                                        extItems.UsrKWJMThumbnailURL =
                                           ControlHelper.GetAttachedFileUrl(null, uploadFile.FileID.ToString());
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        InventoryItem invItems = PXSelectReadonly<InventoryItem, Where<InventoryItem.inventoryID, Equal<Required<InventoryItem.inventoryID>>>>.Select(Base, item.InventoryID);

                        if (invItems != null)
                        {
                            if (!string.IsNullOrEmpty(invItems.ImageUrl))
                            {
                                NoteDoc noteDoc = PXSelectReadonly<NoteDoc, Where<NoteDoc.noteID, Equal<Required<NoteDoc.noteID>>>>.Select(Base, invItems.NoteID);

                                if (noteDoc != null)
                                {
                                    UploadFile uploadFile = PXSelectReadonly<UploadFile, Where<UploadFile.fileID, Equal<Required<UploadFile.fileID>>>>.Select(Base, noteDoc.FileID);

                                    if (uploadFile != null)
                                    {
                                        extItems.UsrKWJMThumbnailURL =
                                          ControlHelper.GetAttachedFileUrl(null, uploadFile.FileID.ToString());
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
acumatica
1个回答
1
投票

我建议你使用PXImageView控件而不是PXImageUploader。

<px:PXImageView runat="server" ID="edImage" DataField="UsrKWJMThumbnailURL" />

还要使用绝对URL进行测试,如下所示:https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png

我测试了这种方法并且可以保证它:enter image description here

这是我的测试项目的完整代码:

using System;
using PX.Data;

namespace PXImageTest
{
  public class TestImage : PXGraph<TestImage>
  {
    public PXFilter<MasterTable> MasterView;

    public void MasterTable_ImageUrl_FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
    {
        e.ReturnValue = "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png";
    }

    [Serializable]
    public class MasterTable : IBqlTable
    {
      public abstract class imageUrl : IBqlField { }

      [PXUIField(DisplayName = "Image")]
      [PXDBString(255, IsUnicode = true)]  
      public virtual String ImageUrl { get; set; }
    }
  }
}

ASPX:

<%@ Page Language="C#" MasterPageFile="~/MasterPages/FormView.master" AutoEventWireup="true" ValidateRequest="false" CodeFile="ZZ999999.aspx.cs" Inherits="Page_ZZ999999" Title="Untitled Page" %>
<%@ MasterType VirtualPath="~/MasterPages/FormView.master" %>

<asp:Content ID="cont1" ContentPlaceHolderID="phDS" Runat="Server">
    <px:PXDataSource ID="ds" runat="server" Visible="True" Width="100%"
        TypeName="PXImageTest.TestImage"
        PrimaryView="MasterView">
        <CallbackCommands>
        </CallbackCommands>
    </px:PXDataSource>
</asp:Content>
<asp:Content ID="cont2" ContentPlaceHolderID="phF" Runat="Server">
    <px:PXFormView ID="form" runat="server" DataSourceID="ds" DataMember="MasterView" Width="100%" AllowAutoHide="false">
        <Template>
            <px:PXLayoutRule runat="server" StartRow="True" ID="PXLayoutRule1" />
            <px:PXImageView runat="server" DataField="ImageUrl" ID="edImage" Style='left:9px;top:9px;Position:absolute;' />
        </Template>
        <AutoSize Container="Window" Enabled="True" MinHeight="200" ></AutoSize>
    </px:PXFormView>
</asp:Content>
© www.soinside.com 2019 - 2024. All rights reserved.