javascript的子父頁訪問、函數調用
效果:比如一個設備管理系統的某處要填入設備編號,但設備編號通常比較難記,而可能記住的只是哪個部門哪個位置的設備。因此,我們想在文本框旁邊加一個按鈕,點擊之后彈出一個子頁面,這里有設備編號、設備的各項詳情對照的一個表格,我只要根據位置找到該設備,雙擊此記錄,設備編號便填上去了。
實現過程:
父頁面
打開新窗口的javascript函數為:
    function openpage(htmlurl) 
    {
        var newwin=window.open(htmlurl,"newwin","toolbar=no,location=no,directories=no,status=no,scrollbars=yes,menubar=no,
resizable=yes,top=100,left=200,width=650,height=300");
        newwin.focus();
        return false;
    }
    </script>
在按鈕中調用:
<asp:button id="button1" runat="server" text="button" onclientclick="return openpage('child.aspx');"/>
子頁面:
綁定gridview的數據源,并在它的rowdatabound事件里寫代碼如下:
    protected void gridview1_rowdatabound(object sender, gridviewroweventargs e)
    {
        string s = "window.opener.document.getelementbyid('textbox1').value='" + e.row.cells[1].text + "'; window.close();";
        if (e.row.rowtype != datacontrolrowtype.header)
        {
            e.row.attributes.add("ondblclick", s);//雙擊選擇
            //當鼠標移到的時候設置該行顏色為"", 并保存原來的背景顏色
            e.row.attributes.add("onmouseover", "currentcolor=this.style.backgroundcolor;this.style.backgroundcolor='#c0c0ff';this.style.cursor='hand';");
            //當鼠標移走時還原該行的背景色
            e.row.attributes.add("onmouseout", "this.style.backgroundcolor=currentcolor");
        }
    }
說明:通過window.open打開新頁面,兩個頁面之前便有了一種父子關系。子頁通過opener可以訪問父頁(控件及寫在父頁的js函數),父頁同樣通過sub可以訪問子頁。如在父頁有個js函數sayhello(),在子頁中只需要opener.sayhello()便可以調用了。
只使用很少的javascript代碼與asp.net結合,便完成了一種很好用的效果。
新聞熱點
疑難解答
圖片精選