2010-08-11 178 views
0

我想使用模板弹出的.aspx页面将数据添加到数据库。ASP.NET AJAX以模态窗口的形式弹出一个页面

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

我有一个addEmployee.aspx,我想在模式窗口中弹出(并且像在某些网站上看到的底层页面),它允许用户输入数据并保存到addEmployee.aspx中的数据库。此页面中包含了用于此工作的所有sql和验证逻辑。当添加完成时,我想提醒用户它去了(关闭弹出窗口并在主页上显示消息后最好,我也想从数据库刷新数据网格信息,以便它会反映新的记录添加。

可有人点我的方向来获得这种类型的功能,而无需编写代码来回回几个星期得到它。

,如果你有更好的解决办法,我洗耳恭听!

谢谢

回答

1

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

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

另外,如果您使用的是updatepanels(再次使用ajax控件工具包),则执行listofEmployeeUpdatePanel.Update(),刷新网格中的项目列表。

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

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

0

在你的情况下,你可以使用jQuery的facebox插件来显示模式弹出,或者你也可以参考原型JavaScript,这是非常灵活和易于使用。

对于facebox, facebox允许将iframe显示为模态弹出。所以你可以把你的链接放在iframe中。另外,“facebox”是“fancybox”,它有很好的gui。它工作得很好,因为我之前使用过它。

希望这会帮助你。

+0

会包装我的每8个格的内更新面板允许我在模态完成时刷新微粒网格? 因此,当您处于风险标签并单击风险网格中特定行的编辑时,您将弹出一个usercontrol编辑该风险数据......完成后,您将删除记录或更新记录并拥有弹出窗口关闭。这应该刷新风险网格数据。 更新面板能够做到这一点? 它将如何触发来做到这一点? 其余更新,以及因为我不想所有8更新,因为只有一个需要? – kacalapy 2010-08-11 14:45:53

+0

使用updatePanels,可以使用UpdateMode = Conditional和ChildrenAsTriggers = false(取决于如何构建UI及其相应的更新面板)属性的适当组合,以确保updatePanels不会全部更新。事实上,你可以明确地确保只有你想要更新的updatePanel实际上是通过调用updatePanel的updatePanelInstance.Update()更新的。u想要更新 – InSane 2010-08-11 15:19:17

+0

我在哪里可以查看这个东西的一些示例代码? 也不会所有的面板必须加载页面,并使一个巨大的大页面?我打算让外部页面进入一个模式窗口,所以我可以分离出每个项目编辑UI和逻辑。 – kacalapy 2010-08-11 16:22:47

0

你可以把你的模态指向addEmployee.aspx的IFrame。然后,添加一个隐藏按钮的主网页,如:

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

添加依序按甚至隐藏按钮,它应该包含的代码更新您的网格:

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(); 
}