DevExpress Web用户控制 - 创建消息框,确认框?

时间:2011-11-22 10:33:26

标签: c# asp.net user-controls devexpress

我正在创建一个Web用户控件,用于显示AspxGridView列上的Alert(删除/编辑),单击服务器端事件。 例如:

删除已禁用的行然后如果像as 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

我从这个codeproject ajax enabled confirm box / messagebox中得到了一个想法。 这里是使用ajax用户控件。它使用Update Panel和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 Control没有像ajax控件这样的Update方法,所有这些callbackpanel和popupcontrol主要用于Callback。

这是用户控制的PreRender事件。在回发时更新用户控件的位置。我想在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。但这是Callback中的客户端功能。

我知道这些控件的回调功能,但我希望这个usercontrol自动化,因为Ajax控件与windows控件一样, 但是在DevExpress中,没有办法使用提供服务器端功能的DevExpress控件来实现。

1 个答案:

答案 0 :(得分:2)

利用http://www.devexpress.com/example=E1120方法作为起点。此选项描述了如何使用ASPxPopupControl(DevExpress ASP.NET产品系列的弹出窗口)来实现此目的。

我相信可以将所需的解决方案与DevExpress产品结合使用。如果您有任何困难,请DX支持人员在这方面为您提供帮助。