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
相关产品推荐
相关产品推荐

