首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于一个子窗体向父窗体传值的有关问题

2013-10-27 
关于一个子窗体向父窗体传值的问题1 我的父窗体 是点击按钮打开一个窗体。asp:Button IDbtnChoseUnit O

关于一个子窗体向父窗体传值的问题


1 我的父窗体 是点击按钮打开一个窗体。


  <asp:Button ID="btnChoseUnit" OnClientClick="javascript:OpenPopup();" runat="server"
                        Text="单位选择" />
<input type="hidden" id="txtUnitName" runat="server" />
                    <input type="hidden" id="txtUnitId" runat="server" />

js代码

<script type="text/javascript">
        function OpenPopup() {

            window.showModalDialog("TreeViewInfo.aspx", "List", "scrollbars=no,resizable=no,width=400,height=263");
        }
        function setValue(UnitName, UnitId) {
            document.getElementById('txtUnitName').value = UnitName;
            document.getElementById('txtUnitId').value = UnitId;
        }
    </script>


看了网上的好多参考,却不知道 
<input type="hidden" id="txtUnitName" runat="server" />
                    <input type="hidden" id="txtUnitId" runat="server" />

这两个隐藏控件的用处。

2 我的子窗体是一个目录树


<input type="hidden" runat="server" id="txtUnitName" />
    <input type="hidden" runat="server" id="txtUnitId" />
    <div>
        <asp:TreeView ID="TrView" Font-Bold="true" Font-Size="15px" runat="server" ImageSet="Contacts"
            ShowCheckBoxes="All" OnTreeNodeCheckChanged="TrView_TreeNodeCheckChanged">
            <ParentNodeStyle Font-Bold="False" />
            <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
            <SelectedNodeStyle Font-Underline="True" HorizontalPadding="0px" VerticalPadding="0px"
                ForeColor="#5555DD" />
            <NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px"
                NodeSpacing="0px" VerticalPadding="0px" />
        </asp:TreeView>
    </div>
    <div>
        <asp:Button ID="btnUnitAdd" runat="server" Text="确认选择" OnClick="btnUnitAdd_Click" />
    </div>
    </form>


我看网上的参考就是 当点击确认选择的时候 给那两个隐藏控件赋值。

但是我不知道 需要给子窗体也弄两个隐藏控件不

我在网上找了一个参考


StringBuilder strUname = new StringBuilder();
            StringBuilder strUnitId = new StringBuilder();
            //组织的名字
            string UnitName = string.Empty;
            //组织Id
            string UnitId = string.Empty;
            foreach (TreeNode item in TrView.CheckedNodes)
            {
                if (item.Checked)
                {
                    strUname.AppendLine(item.Text + ";");
                    strUnitId.AppendLine(item.Value + ";");

                }

            }
            //      function valueClose() {
            //    var UnitName = docment.getElementById('txtUnitName').value;


            //    var UnitId = docment.getElementById('txtUnitId').value;
            //    opener.setValue(UnitName, UnitId)
            //    window.close();
            //}

            StringBuilder s = new StringBuilder();
            s.Append("<script language=javascript>" + "\n");
            s.Append("var UnitName = docment.getElementById('txtUnitName').value;");
            s.Append("var UnitId = docment.getElementById('txtUnitId').value;");
            s.Append("opener.setValue('" + strUname + "', '" + strUnitId + "')");
            s.Append("window.close();" + "\n");
            s.Append("</script>");
            Type cstype = this.GetType();
            ClientScriptManager cs = Page.ClientScript;
            string csname = "ltype";
            if (!cs.IsStartupScriptRegistered(cstype, csname))
                cs.RegisterStartupScript(cstype, csname, s.ToString());



我需要传的就只是 strUname 和 strUnitId  这两个值

但是 这个子窗体 不关  还报错

说页面脚本错误

我不知道 这个是不是能够取到值  求解决 treeview 页面传值 asp.net
[解决办法]
hold on, 是不是postback后 opener就没有了
[解决办法]
--父窗体
var k = window.showModalDialog();

--子窗体
window.returnValue=返回值; 
window.close(); 
关闭又跳出,在HTML页面中的html和body之间加入<base target=_self> 就可以了

热点排行