You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用通用查询界面的XML导入功能并在BLC代码中实现同类功能?

Acumatica 实现类通用查询文件导入功能的BLC示例

1. 前端ASPX控件配置

使用Acumatica内置的PXUploadDialog控件,该控件与通用查询导入弹窗逻辑一致:

<px:PXUploadDialog ID="edUploadFile" runat="server" Key="UploadFile"
    DialogTitle="Import XML File" Accept=".xml,.txt"
    AutoSave="false" RenderStyle="Button" />
  • Accept=".xml,.txt":限制可选择的文件类型,匹配需求
  • DialogTitle:自定义弹窗标题,与通用查询导入弹窗样式统一

2. BLC层核心实现

2.1 定义DAC字段(存储上传文件标识)

在自定义DAC或扩展现有DAC中添加字段:

public class MyCustomDAC : IBqlTable
{
    // 其他业务字段...

    #region UploadFile
    [PXDBString(255, IsUnicode = true)]
    [PXUIField(DisplayName = "Upload File")]
    public virtual string UploadFile { get; set; }
    public abstract class uploadFile : BqlString.Field<uploadFile> { }
    #endregion
}

2.2 文件读取与处理逻辑

在BLC中通过内置API获取文件内容并处理:

public class MyCustomGraph : PXGraph<MyCustomGraph>
{
    public PXSelect<MyCustomDAC> CustomRecords;

    [PXButton(CommitChanges = true)]
    [PXUIField(DisplayName = "Import File")]
    protected virtual IEnumerable ImportFile(PXAdapter adapter)
    {
        // 获取上传的文件信息
        PX.SM.FileInfo uploadedFile = PXUploadDialog.GetFile(this, "UploadFile");
        if (uploadedFile == null)
        {
            throw new PXException("请选择要导入的文件");
        }

        // 验证文件类型
        if (!uploadedFile.Name.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
        {
            throw new PXException("仅支持XML格式文件");
        }

        // 读取文件内容为字符串
        string xmlContent = Encoding.UTF8.GetString(uploadedFile.Bytes);

        // 此处添加XML解析、业务逻辑处理代码(比如反序列化到实体、数据入库等)
        // ...

        PXProcessing.SetInfo(this, $"文件 {uploadedFile.Name} 导入成功");
        return adapter.Get();
    }
}

3. 关键说明

  • PXUploadDialog是Acumatica原生控件,与通用查询导入弹窗使用同一套前端逻辑,样式交互完全一致
  • 无需手动编写JS弹窗代码,控件已封装所有前端交互逻辑
  • 通过PX.SM.FileInfo可直接获取文件字节流和基本信息,转换为字符串即可处理XML内容

内容的提问来源于stack exchange,提问作者pmfith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 13:02:21