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

PowerApps重复画廊:结合SQL表筛选与多条目添加方案求助

解决方案

1. 修正添加员工的逻辑

你之前的问题是添加条目时只往colSearchID里存了空数据,没有把SQL表中查到的真实员工信息放进去。直接修改添加项图标的OnSelect代码:

// 先把搜索框的员工编号转成数值
Set(varSearchEmpID, Value(IDSearch.Text));
// 从SQL表bPREH里匹配对应员工
Set(varFoundEmp, LookUp(bPREH, Employee = varSearchEmpID));
// 找到员工就添加到集合,没找到就提示错误
If(
    !IsBlank(varFoundEmp),
    Collect(colSearchID, {
        Employee: varFoundEmp.Employee,
        FirstName: varFoundEmp.FirstName,
        LastName: varFoundEmp.LastName
    }),
    Notify("找不到这个员工编号", NotificationType.Error)
)

2. 绑定画廊到集合

把IDSearchGallery的Items属性直接设为:

colSearchID

然后调整控件的绑定:

  • 员工编号控件txtID的Text设为ThisItem.Employee
  • 姓名控件txtName的Text设为ThisItem.FirstName & " " & ThisItem.LastName(直接拼接比用Concatenate更简洁)

3. 优化App启动逻辑

原来的OnStart可以简化成初始化集合,不需要自增空条目(如果不需要初始占位的话):

ClearCollect(colSearchID, {Employee:0, FirstName:"", LastName:""});
// 要是不需要初始空行,直接写ClearCollect(colSearchID);就行

可选优化:避免重复添加同一员工

如果不想让同一个员工被多次添加,在Collect前加个判断:

If(
    !IsBlank(varFoundEmp) && IsBlank(LookUp(colSearchID, Employee = varSearchEmpID)),
    Collect(colSearchID, {
        Employee: varFoundEmp.Employee,
        FirstName: varFoundEmp.FirstName,
        LastName: varFoundEmp.LastName
    }),
    If(IsBlank(varFoundEmp), Notify("找不到这个员工编号", NotificationType.Error), Notify("该员工已经添加过了", NotificationType.Warning))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:06:07