ASP.NET AJAX弹出一个页面作为模态窗口

时间:2010-08-11 14:01:14

标签: c# asp.net jquery asp.net-ajax

我想使用.aspx页面的模式弹出窗口向数据库添加数据。

所以我有一个关于员工的一些SQL表数据的网格。我希望在此页面的某个位置有一个按钮或链接,以便用户能够将记录添加到数据库,然后刷新网格以显示新数据。

我有一个addEmployee.aspx,我想在一个模态窗口中弹出(并使基础页面变暗,就像我在某些网站上看到的那样),它允许用户输入数据并保存到addEmployee.aspx中的数据库中。这个页面包含了封装在其中的所有sql和验证逻辑。当添加完成后,我想提醒用户它去了(可能最好关闭弹出窗口并在主页面上显示消息,我也想刷新数据库中的数据网格信息,以便它将反映新的记录添加。

有人可以指出我的方向来获得这种类型的功能,而无需花费数周时间来获取它。

如果你有更好的解决方案,我全都耳朵!

感谢

3 个答案:

答案 0 :(得分:1)

如果您可以将addEmployee.aspx功能封装到用户控件中,那么您可以将此用户控件(addEmployee.ascx)添加到带有网格的页面(例如viewEmployee.aspx)

然后使用模式弹出扩展器(如果您使用的是ajax控件工具包),您可以显示此addEmployee.ascx控件,其中用户有一个保存按钮,其中包含用于添加员工的相应逻辑。

此外,如果您正在使用updatepanels(再次出现在ajax控件工具包的情况下),则执行listofEmployeeUpdatePanel.Update(),刷新网格中的项目列表。

这就是我目前在当前应用程序中实现一个非常相似的用例的方法。

这种方法的一个缺点是:addEmployee.ascx用户控件是原始页面的一部分,无论是否使用它都会增加大小。

答案 1 :(得分:0)

在你的情况下,你可以使用jquery facebox插件来显示模态弹出窗口,或者你也可以参考原型javascript,它非常灵活且易于使用。

对于facebox, facebox允许将iframe显示为模式弹出窗口。所以你可以把你的链接放在iframe中。替代方案,“facebox”是“fancybox”,它有很好的gui。它的效果很棒,因为我之前使用过它。

希望这会对你有所帮助。

答案 2 :(得分:0)

您可以在模式中放置一个指向addEmployee.aspx的IFrame。然后,在主页面上添加一个隐藏按钮,如:

<div style="visibility: hidden; display: none;">
    <asp:Button ID="btnHidden" runat="server" />
</div>

将Cick添加到隐藏按钮,该按钮应包含更新网格的代码:

protected void btnHidden_Click(object sender, EventArgs e)
{
  //Hidden button was clicked.  Update grid.
}

然后,在addEmployee.aspx中的“添加”点击事件中,添加代码以告知主页面提交和更新网格:

  private void SubmitParentPage()
    {
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "submitHiddenButton", "window.parent.submitHiddenButton();", true);
    }

这是在主页面上调用的javascript函数:

function submitHiddenButton() {
    var btn = $get('<%= btnHidden.ClientID %>');
    btn.click();
}