问题描述:想实现类似c/s的弹出窗口选择器;要求父窗口中textbox的text内容要从弹出的子窗口中的infragistics的datagrid控件选择,以增加易用性。
分析问题:这里涉及到最主要的Jscript实现的功能就是从子窗口中选择数据并传到父窗口,然后关闭子窗口。
解决方案:
首先,把下面这段Jscript代码加到要叶面中去,
var parwindow=null;
parwindow=self.opener; function addClientType(type)
{
if(parwindow!=null){
parwindow.document.all("txtType").value=type;
window.close();
}
}
这里需要弹出窗口中的服务器端的变量中的值传到客户端的父窗口的addClientType函数里的type变量里去,如何实现呢?非常简单,继续请看代码:
private void UWebGrid_ActiveRowChange(object sender, Infragistics.WebUI.UltraWebGrid.RowEventArgs e)
{
string flag1 = e.Row.Cells.FromKey("Type").Value.ToString();
string jscript = "<script language='javascript'> addClientType('"+flag1+"');</script>";
Page.RegisterClientScriptBlock("select",jscript);
}
用 到了infragistics的控件,他的DataGrid 里的ActiveRowChange事件可以很轻松的捕捉到选择的行的值,然后用Page.RegisterClientScriptBlock ("select",jscript);输出到客户端就OK了。
贴张图:
分析问题:这里涉及到最主要的Jscript实现的功能就是从子窗口中选择数据并传到父窗口,然后关闭子窗口。
解决方案:
首先,把下面这段Jscript代码加到要叶面中去,
var parwindow=null;
parwindow=self.opener; function addClientType(type)
{
if(parwindow!=null){
parwindow.document.all("txtType").value=type;
window.close();
}
}
这里需要弹出窗口中的服务器端的变量中的值传到客户端的父窗口的addClientType函数里的type变量里去,如何实现呢?非常简单,继续请看代码:
private void UWebGrid_ActiveRowChange(object sender, Infragistics.WebUI.UltraWebGrid.RowEventArgs e)
{
string flag1 = e.Row.Cells.FromKey("Type").Value.ToString();
string jscript = "<script language='javascript'> addClientType('"+flag1+"');</script>";
Page.RegisterClientScriptBlock("select",jscript);
}
用 到了infragistics的控件,他的DataGrid 里的ActiveRowChange事件可以很轻松的捕捉到选择的行的值,然后用Page.RegisterClientScriptBlock ("select",jscript);输出到客户端就OK了。
贴张图:
![](https://i-blog.csdnimg.cn/blog_migrate/5662dce52bd4125ad5e64e40e6501fb3.gif)