ASP.NET Core中Syncfusion Scheduler弹窗拖动及删除按钮隐藏问题
解决ASP.NET Core中Syncfusion Scheduler的两个弹窗问题
问题1:弹窗添加e-draggable类后无法拖动
只添加e-draggable类不足以实现拖动,因为Syncfusion的可拖动功能需要初始化对应组件逻辑。可以通过Scheduler的popupOpen事件处理:
- 在Scheduler配置中绑定
popupOpen事件:
<ejs-schedule id="schedule" popupOpen="onPopupOpen"> <!-- 其他配置内容 --> </ejs-schedule>
- 实现事件处理函数,在弹窗打开后初始化拖动逻辑:
function onPopupOpen(args) { const popupElement = document.getElementById('schedule_dialog_wrapper'); // 初始化Syncfusion Draggable组件,指定弹窗头部为拖动触发区域 new ej.base.Draggable(popupElement, { handle: '.e-popup-header' }); }
无需手动添加e-draggable类,组件会自动处理样式与拖动逻辑。
问题2:无法隐藏/禁用弹窗的删除按钮
你的代码尝试设置e-disable属性是错误的,Syncfusion按钮的禁用状态由e-disabled类或原生disabled属性控制,可通过以下两种方式实现需求:
方式1:禁用按钮
function onPopupOpen(args) { const deleteBtn = document.querySelector('#schedule_dialog_wrapper .e-footer-content .e-event-delete'); if (deleteBtn) { // 添加禁用类 deleteBtn.classList.add('e-disabled'); // 或设置原生disabled属性 deleteBtn.disabled = true; } }
方式2:直接隐藏按钮
如果不需要保留按钮位置,可直接隐藏:
function onPopupOpen(args) { const deleteBtn = document.querySelector('#schedule_dialog_wrapper .e-footer-content .e-event-delete'); if (deleteBtn) { deleteBtn.style.display = 'none'; } }
注意:必须在popupOpen事件中执行上述代码,确保弹窗与按钮元素已渲染完成,否则无法获取目标DOM节点。
内容的提问来源于stack exchange,提问作者nyny
相关产品推荐
相关产品推荐

