Hi Rob,
Of course it is possible. I prepared a simple exmaple to show you which way
to go. Please note, I used AJAX predecessor ATLAS which should (in this case)
be fine. Example consists of two pages - main where you click to select
employees from the list located in a popup window, second page is just a
mentioned popup. In order to post the code in two pieces, i used script runat
server, but ideally you could move it to code behind.
-- begin RobsmainPage.aspx --
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="RobsMainPage.aspx.cs" Inherits="RobsMainPage" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<atlas:ScriptManager ID="ScriptManager" EnablePartialRendering="True"
runat="server" />
<atlas:UpdatePanel ID="UpdatePanel" RenderMode="Block" runat="server"
Mode="Always">
<ContentTemplate>
<asp
![Stick Out Tongue :P :P](/styles/default/custom/smilies/tongue.gif)
laceHolder runat="server" ID="container" />
<asp:Button runat="server" ID="btnRefresh" Width="0" Height="0"
OnClick="btnRefresh_Click" />
<asp:HiddenField runat="server" ID="selectedEmployeeId" />
</ContentTemplate>
</atlas:UpdatePanel>
<asp:Button runat="server" ID="btnSelect" Text="Select Employee to
Update..." OnClientClick="SelectEmployee(); return false;" />
<asp:Button runat="server" ID="btnSubmit" Text="Submit Selection"
OnClick="btnSubmit_Click" />
<script type="text/javascript">
//<!--
function EployeeSelected(id)
{
var hidden = $('<%= selectedEmployeeId.ClientID %>');
if (hidden)
hidden.value = id;
var btn = $('<%= btnRefresh.ClientID %>');
if (btn)
{
btn.click();
}
}
function SelectEmployee()
{
var win = window.open('RobsPopupPage.aspx', 'RobsPopupPage',
'width=450,height=350');
if (!win)
{
alert('Disable popup blocker please!');
}
}
// -->
</script>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
RecereateList();
}
protected void btnRefresh_Click(object sender, EventArgs e)
{
int id;
if (int.TryParse(selectedEmployeeId.Value, out id))
{
SelectedEmployeeIds.Add(id);
AddEmployeeToList(id);
}
}
private void AddEmployeeToList(int id)
{
Label label = new Label();
label.Text = "Employee selected with id = " + id.ToString();
label.Style.Add("display", "block");
container.Controls.Add(label);
}
private void RecereateList()
{
foreach (int id in SelectedEmployeeIds)
{
AddEmployeeToList(id);
}
}
private ArrayList SelectedEmployeeIds
{
get
{
ArrayList value = (ArrayList)ViewState["SelectedEmployeeIds"];
if (value == null)
{
value = new ArrayList();
ViewState["SelectedEmployeeIds"] = value;
}
return value;
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
// do something with selected employee ids:
foreach (int id in SelectedEmployeeIds)
{
// whatever
}
}
</script>
</form>
</body>
</html>
-- end RobsMainPage.aspx --
-- begin RobsPopupPage.aspx --
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="RobsPopupPage.aspx.cs" Inherits="RobsPopupPage" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<script type="text/javascript">
//<!--
function PerformSelect(id)
{
if (window.opener)
{
if (window.opener.EployeeSelected)
window.opener.EployeeSelected(id);
window.close();
}
}
//-->
</script>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
employees.DataSource = GetEmployees();
employees.DataBind();
}
}
public System.Data.DataTable GetEmployees()
{
System.Data.DataTable table =
new System.Data.DataTable();
System.Data.DataRow row = null;
table.Columns.Add("EmployeeId", typeof(int));
table.Columns.Add("EmployeeName", typeof(string));
table.Columns.Add("EmployeeRole", typeof(string));
for (int i = 0; i < 10; i++)
{
row = table.NewRow();
row[0] = i;
row[1] = "employee " + i.ToString();
row[2] = (i % 3 == 0) ? "Manager" : "Clerk";
table.Rows.Add(row);
}
return table;
}
</script>
<asp:GridView runat="server" ID="employees" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
Name
</HeaderTemplate>
<ItemTemplate>
<a href="javascript
![Stick Out Tongue :P :P](/styles/default/custom/smilies/tongue.gif)
erformSelect('<%# Eval("EmployeeId") %>');"><%#
Eval("EmployeeName")%></a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Eployee's Role" DataField="EmployeeRole" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
-- end RobsPopupPage.aspx --
Hope this helps
Milosz