the following two pages will demonstrate how to use client side "window.showmodalwindow" in combination with asp.net server side postback.
=======================webform1.aspx=========================
<%@ page language="c#" autoeventwireup="true" %><%@ import namespace="system.data" %><!doctype html public "-//w3c//dtd html 4.0 transitional//en" ><html> <head> <title>webform1</title> </head> <body ms_positioning="gridlayout"> <form id="form1" method="post" runat="server"> <asp:datagrid id="datagrid1" style="z-index: 101; left: 56px; position: absolute; top: 48px" runat="server" width="512px" height="256px" autogeneratecolumns="false"> <columns> <asp:boundcolumn datafield="stringcolumn" headertext="stringcolumn"></asp:boundcolumn> <asp:templatecolumn headertext="datecolumn"> <itemtemplate> <asp:textbox id=textbox1 runat="server" text='<%# datetime.parse(databinder.eval(container, "dataitem.datecolumn").tostring()).toshortdatestring() %>'> </asp:textbox> <asp:button id="button1" runat="server" text="edit value"></asp:button> </itemtemplate> </asp:templatecolumn> </columns> </asp:datagrid> </form> <script runat="server"> protected datatable dt; protected void page_load(object sender, system.eventargs e) { datagrid1.itemdatabound += new system.web.ui.webcontrols.datagriditemeventhandler(this.datagrid1_itemdatabound); dt = new datatable("testtable"); dt.columns.add("stringcolumn",typeof(string)); dt.columns.add("datecolumn",typeof(datetime)); dt.rows.add(new object[]{"string 1",datetime.now}); dt.rows.add(new object[]{"string 2",datetime.now}); datagrid1.datasource = dt; datagrid1.databind(); } protected void datagrid1_itemdatabound(object sender, system.web.ui.webcontrols.datagriditemeventargs e) { //eliminate the headers and footers. if (e.item.cells[1].controls.count == 5) { textbox tx = (textbox)e.item.cells[1].controls[1]; button btn = (button)e.item.cells[1].controls[3]; btn.attributes.add("onclick","return buttonclick('" + tx.clientid + "');"); } } </script> <script language="javascript"> function buttonclick(sendertextboxid) { //debugger; var i; var sendertextbox; for (i = 0; i < event.srcelement.parentelement.children.length; i++) { if (event.srcelement.parentelement.children[i].id == sendertextboxid) { sendertextbox = event.srcelement.parentelement.children[i]; } } var returnvalue; returnvalue = window.showmodaldialog("calendardialog.aspx?selecteddate=" + sendertextbox.value); //debugger; if (returnvalue != null) { sendertextbox.value = returnvalue.tostring(); } //cancel the postback. return false; } </script> </body></html>
=======================calendardialog.aspx=========================
<%@ page language="c#" autoeventwireup="true"%><!doctype html public "-//w3c//dtd html 4.0 transitional//en" ><html> <head> <title>calendardialog</title> <base target=_self> </head> <body ms_positioning="gridlayout"> <form id="form1" method="post" runat="server"> <asp:calendar id="calendar1" style="z-index: 101; left: 32px; position: absolute; top: 32px" runat="server" width="241px" height="176px"></asp:calendar> <input style="z-index: 102; left: 32px; width: 96px; position: absolute; top: 224px; height: 24px"
本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)