DevExpress Web用户控件-创建消息框,确认框
本文关键字:消息 确认 创建 Web 用户 控件 DevExpress | 更新日期: 2023-09-27 18:15:19
我正在创建一个web用户控件,用于显示AspxGridView列(删除/编辑)上的警报,单击服务器端事件。例如:
删除时禁用行,然后如果像asp的网格视图,当删除命令火,然后在删除显示消息,删除是不允许的/确认之前删除,我们在windows应用程序..
原因:
To reduce the database hit for checking that user allowed to delete/ Edit
particular record.
I do not want to check thousand of rows to disable them OnHtmlRowCreated Event
of AspxGridView
我已经从这个代码项目ajax启用确认框/消息框的想法。这里使用的是ajax用户控件。它使用更新面板和Molalpopupextender控件来创建这个用户控件。
它提供了这些特性。
The MessageBox should have a simple usage. We should show the message with such a single line of code.
The MessageBox should be modal. I mean, a user should not be able to do any other operation while the message is open.
The MessageBox should support multiple messages. Multiple messages may be shown through one postback.
The MessageBox should have a different appearance according to the type of the message, whether it is an error message or just an information message.
The MessageBox should have confirmation functionality.
The MessageBox should be AJAX ready.
优点:这个用户控件可以在服务器端调用,并且可以在ajax控件的服务器端功能上进行更新。
我不想在我的项目中包含Ajax库。因此,我已经使用了我的解决方案,如下所示:
Replaced Update Panel with CallbackPanel control
Replaced PopupExtender with DevExpress PopupControl
Add all content of the PopupExtender target panel's control to PopupControl content Collection
问题:DevExpress控件不像ajax控件一样有更新方法,所有这些callbackpanel和popupcontrol都主要在Callback上工作。
这是用户控件的preender事件。用户控件在回发时更新。我想在gridview OnDeleting事件上更新这个
protected override void OnPreRender(EventArgs e){base.OnPreRender (e);
if (btnOK.Visible == false)
mpeMsg.OkControlID = "btnD2";
else
mpeMsg.OkControlID = "btnOK";
if (Messages.Count > 0)
{
btnOK.Focus();
grvMsg.DataSource = Messages;
grvMsg.DataBind();
mpeMsg.Show(); /// Show AspxPopupControl like as like modalpopupExtender
udpMsj.Update(); // I want to update CallbackPanel like this
}
else
{
grvMsg.DataBind();
udpMsj.Update(); /// I want to update CallbackPanel like this
}
if (this.Parent.GetType() == typeof(UpdatePanel))
{
UpdatePanel containerUpdatepanel = this.Parent as UpdatePanel;
containerUpdatepanel.Update();
}
}
还有另一种方法可以实现此功能,例如在另一个页面上创建控件并将呈现的html加载到popupcontrol。但这也是客户端的功能在回调。
我知道这些控件的回调功能,但我希望这个usercontrol自动作为Ajax控件做相同的windows控件,但是在DevExpress中没有办法使用提供服务器端功能的DevExpress控件来实现。
利用http://www.devexpress.com/example=E1120方法作为起点。这个选项描述了如何使用ASPxPopupControl(来自DevExpress ASP的一个弹出窗口)。. NET产品线),
我相信可以将所需的解决方案与DevExpress产品的使用相结合。如果您有任何困难,请让DX支持人员在这方面帮助您。