65.9K
CodeProject 正在变化。 阅读更多。
Home

从弹出窗口向父窗体的 TextBox 传递值

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (5投票s)

2013 年 10 月 11 日

CPOL

2分钟阅读

viewsIcon

45373

从弹出窗口将值传回父页面是一个经常被问到的问题。尤其是在弹出窗口中有 GridView 类型控件时。

从弹出窗口将值传回父页面是一个经常被问到的问题。尤其是在弹出窗口中有 GridView 类型控件时。在下面的示例中,我们将使用两个窗体。父窗体是 parent.aspx,弹出窗口是 popup.aspx。另外请注意,parent.aspx 窗体继承自某个 MasterPage。代码同时提供了 VB.Net 和 C#.Net 版本。

--- 父窗体的 .aspx 代码 ---

<script type="text/javascript">

function OpenPopup() {

    window.open("popup.aspx","List","scrollbars=no,resizable=no,width=400,height=280");

    return false;

}

</script>

.      

.

.      

<asp:TextBox ID="txtPopupValue" runat="server" Width="327px"></asp:TextBox>

<asp:Button ID="Button1" runat="server" Text="Show List" />

--- 如果语言是 vb.net,则为 parent.aspx 的 .vb 代码 ---

If Not IsPostBack Then

    Me.Button1.Attributes.Add("onclick", "javascript:return OpenPopup()")

End If

--- 如果语言是 C#.net,则为 parent.aspx 的 .cs 代码 ---

if (!IsPostBack) {

    this.Button1.Attributes.Add("onclick", "javascript:return OpenPopup()");

}

--- 弹出窗口的 .aspx 代码 ---

<script language="javascript">

function GetRowValue(val)

{

    // 为了简化代码而硬编码的值。

    // ControlID 可以作为查询字符串传递给弹出窗口

    window.opener.document.getElementById("ctl00_ContentPlaceHolder1_TextBox2").value = val;

    window.close();

}

</script>

 

 

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">

    <Columns>

        <asp:TemplateField>

            <AlternatingItemTemplate>

                <asp:Button ID="btnSelect" runat="server" Text="Select" />

            </AlternatingItemTemplate>

            <ItemTemplate>

                <asp:Button ID="btnSelect" runat="server" Text="Select" />

            </ItemTemplate>

        </asp:TemplateField>

    </Columns>

</asp:GridView>

--- 如果语言是 vb.net,则为 .vb 文件 ---

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound

    If (e.Row.RowType = DataControlRowType.DataRow) Then

        '假设所需值列在 gridview 中的第二列

        DirectCast(e.Row.FindControl("btnSelect"), Button).Attributes.Add("onclick", "javascript:GetRowValue('" & e.Row.Cells(1).Text & "')")

    End If

End Sub

--- 如果语言是 C#.net,则为 .cs 文件 ---

protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) {

    if ((e.Row.RowType == DataControlRowType.DataRow)) {

        //假设所需值列在 gridview 中的第二列

        ((Button)e.Row.FindControl("btnSelect")).Attributes.Add("onclick", "javascript:GetRowValue('" + e.Row.Cells[1].Text + "')");

    }

}

 

我希望上面的代码清晰易懂。

祝你编码愉快!!!

© . All rights reserved.