其实是用AJAX ModalPopupExtender实现伪新开窗口数据更新,因为都是在一个页面中,:) <%@ Page Language="C#" AutoEventWireup="true" CodeFile="A.aspx.cs" Inherits="SubModule_CarManage_A" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> <mce:style type="text/css"><!-- .modalBackground { background-color: #ddd; filter:alpha(opacity=70); opacity:0.5; } .modalPopup { background-color: #EAFDFF; border-width: 3px; border-style: solid; border-color: Gray; padding: 3px; width: 250px; } .confirmPanel { border:2px solid #ccc; background-color:#fff; padding:15px; width:230px; height:50px; } --></mce:style><style type="text/css" mce_bogus="1"> .modalBackground { background-color: #ddd; filter:alpha(opacity=70); opacity:0.5; } .modalPopup { background-color: #EAFDFF; border-width: 3px; border-style: solid; border-color: Gray; padding: 3px; width: 250px; } .confirmPanel { border:2px solid #ccc; background-color:#fff; padding:15px; width:230px; height:50px; } </style> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager runat=server ID="scm"></asp:ScriptManager> <div> <asp:UpdatePanel ID="UP1" runat=server> <ContentTemplate> <asp:ModalPopupExtender TargetControlID="HiddenField1" BackgroundCssClass="modalBackground" PopupControlID="PN1" DropShadow=true ID="MPE1" runat=server></asp:ModalPopupExtender> <asp:HiddenField ID="HiddenField1" runat=server/> <asp:Panel ID="PN1" runat=server Height="50px" Width="125px" CssClass="confirmPanel" style="display:none" mce_style="display:none" > <asp:Button ID="Button2" runat=server Text="确定" οnclick="Button2_Click" /> <asp:TextBox ID="TextBox1" runat=server></asp:TextBox> <asp:Button ID="Button3" runat=server Text="取消" /> </asp:Panel> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"> <Columns> <asp:BoundField DataField="ID_Car" HeaderText="ID_Car" InsertVisible="False" ReadOnly="True" SortExpression="ID_Car" /> <asp:BoundField DataField="CarType" HeaderText="CarType" SortExpression="CarType" /> <asp:BoundField DataField="CarNo" HeaderText="CarNo" SortExpression="CarNo" /> <asp:BoundField DataField="Seats" HeaderText="Seats" SortExpression="Seats" /> <asp:BoundField DataField="State" HeaderText="State" SortExpression="State" /> <asp:BoundField DataField="Remark1" HeaderText="Remark1" SortExpression="Remark1" /> <asp:TemplateField> <ItemTemplate> <asp:Button ID="Button4" runat=server Text="编辑" CommandArgument='<%#Eval("ID_Car") %>' OnClick="Button4_Click" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </ContentTemplate> </asp:UpdatePanel> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [CarManage_CarInf]"></asp:SqlDataSource> </div> </form> </body> </html> 后台: public partial class SubModule_CarManage_A : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button4_Click(object sender, EventArgs e) { int id = int.Parse((sender as Button).CommandArgument); TextBox1.Text = id.ToString(); MPE1.Show(); } protected void Button2_Click(object sender, EventArgs e) { MPE1.Hide(); } }