动态数据插入与AJAX刷新GridView示例

在ASP.NET Web应用程序中,经常需要从数据库动态插入数据,并希望在不刷新整个页面的情况下更新页面上的数据显示。本文将介绍如何使用ASP.NET控件,如GridView、SqlDataSource、LinkButton、Panel、ModalPopupExtender和UpdatePanel,来实现这一功能。

实现步骤

要实现这个功能,需要以下步骤:

  1. 设置GridView控件来显示数据库中的类别数据。
  2. 使用SqlDataSource控件从数据库获取数据并绑定到GridView。
  3. 添加一个LinkButton控件,允许用户向类别表中插入新数据。
  4. 使用Panel控件和ModalPopupExtender控件提供插入新数据到数据库表的界面。
  5. 将GridView包裹在一个UpdatePanel控件中,以便在插入新数据行时,能够平滑地、以AJAX方式刷新GridView数据,而不需要刷新整个网页。

以下是详细的实现步骤:

首先,创建一个GridView控件(GridView1),用于显示Northwind数据库中Categories表的数据行。

然后,设置一个SqlDataSource控件(SqlDataSource1),用于从数据库获取数据并绑定到GridView。

接下来,添加一个LinkButton控件(LinkButton1),用户点击此按钮时,可以插入新的数据行到Categories表。

为了提供插入新数据的界面,使用Panel控件(Panel1)和ModalPopupExtender控件(ModalPopupExtender1)。ModalPopupExtender的PopupControlID属性设置为Panel1,这样当用户点击LinkButton1时,Panel1面板就会弹出。

Panel1包含适当的数据输入文本框、确定按钮(OkButton)和取消按钮(CancelButton)。这两个按钮通过ModalPopupExtender的OkControlID和CancelControlID属性连接。此外,OnOkScript="onOkClick()"属性声明在用户点击OkButton按钮时执行onOkClick() JavaScript函数。

onOkClick() JavaScript函数在客户端执行。它收集用户输入,并异步调用DB.AddCategory Web(和脚本)方法。DB.AddCategory将新的数据行插入到数据库中。由于这是一个异步调用,因此也定义了成功(onAddSuccess)和失败(onAddFailure)回调函数。

注意onAddSuccess回调函数中的_doPostBack调用。这是为了调用OkButton控件的服务器回发所必需的代码。注意,由于在ContentPlaceHolder中,OkButton的ID可能是"ctl00ContentPlaceHolder01OkButton",这是JavaScript代码必须知道的。

此时,执行OkButton_Click方法的服务器端代码。它所做的就是使数据绑定的GridView重新绑定到SqlDataSource。通常,这将导致浏览器中的整个网页刷新,这是不希望的。真正想要的是刷新GridView而不刷新页面效果。这就是为什么将GridView放置在UpdatePanel控件中的原因。

接下来的问题是如何使UpdatePanel在新数据行插入数据库后立即更新。简而言之,只需要设置正确的触发器。但是,是哪个控件呢?

如果认为LinkButton应该是触发器,那么就错了。答案是Panel1中的OkButton控件必须是更新UpdatePanel的触发器。这就是为什么在异步Web服务调用完成后立即对OkButton进行回发。回发导致触发器触发,然后UpdatePanel和GridView(新数据行显示为网格行)一起更新。设置触发器非常简单:

<Triggers> <asp:AsyncPostBackTrigger ControlID="OkButton" EventName="Click" /> </Triggers>

最后但并非最不重要的是,确保将UpdatePanel的UpdateMode属性设置为"Conditional"。另外,不要忘记使DB Web Service对JavaScript代码可用:

<asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference Path="DB.asmx" /> </Services> </asp:ScriptManager>
  1. 用户点击LinkButton。
  2. ModalPopupExtender弹出Panel1。用户输入数据并点击确定按钮。
  3. 执行onOkClick() JavaScript代码。进行异步Web服务调用,并将新数据行插入数据库。成功时,控制返回到onAddSuccess回调函数,然后。
  4. 触发OkButton的服务器端代码的回发。
  5. 由于OkButton是UpdatePanel的触发器,回发有效地导致UpdatePanel及其内容更新。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485