如何实现选择dropdownlist选项时弹出popup form并刷新下拉列表
精准检索关键词
用下面这些组合关键词搜,能过滤掉大部分前端框架、ASP.NET Core等不匹配你技术栈的无关结果:
ASP.NET Web Forms DropDownList add new item popup FormViewDropDownList select "Add New" option open modal refresh items partial postbackWeb Form FormView DropDownList dynamic insert new vendor without page reloadASP.NET UpdatePanel ModalPopup DropDownList refresh after insert
适配FormView场景的实现思路
你当前用Web Form FormView做录入页的场景,不用搞复杂的前端框架,按下面的步骤搭就行:
- 第一步先改造厂商下拉框:给DropDownList设置
AppendDataBoundItems="true",在列表最顶部加一个固定占位项<asp:ListItem Text="[新增新厂商]" Value="-1"></asp:ListItem>,绑定厂商数据的时候记得把判断if (!IsPostBack)套在绑定逻辑外面,避免回发的时候重置列表、丢用户已经填的内容。 - 第二步做弹窗和局部刷新:把DropDownList和弹窗区域一起包进
UpdatePanel做异步回发,弹窗不用搞太复杂,要么用项目里已经引入的AJAX Control Toolkit的ModalPopupExtender,要么写几十行原生JS写个遮罩层弹div就行,弹窗里放厂商信息录入的子表单和提交按钮。 - 第三步做联动逻辑:监听DropDownList的选中变化,只要选中值是
-1就触发弹窗;弹窗里的厂商表单提交成功后,重新执行DropDownList的厂商列表绑定逻辑,直接把DropDownList的SelectedValue设为刚新增的厂商ID,这时候局部刷新只会更新下拉框区域,用户之前在产品录入表单里填的其他内容不会丢失,也不用手动重新选新厂商。
避坑提示
- 不要用全页回发触发弹窗,不然用户填了一半的产品信息会被清空,体验非常差。
- 新增厂商的逻辑写完记得加个判断:如果提交的厂商名已经存在,直接返回已有厂商的ID选中就行,不用重复插入数据。
- 如果用原生JS做弹窗,提交新厂商的时候可以直接调页面后台的静态
[WebMethod]方法,不用走全控件树的回发,响应速度更快。
内容的提问来源于stack exchange,提问作者Jeff Hurley
相关产品推荐
相关产品推荐

