2013年8月19日 星期一

[ASP.NET] 點選GridView內LinkButton透過showModalDialog開啟並傳值給子視窗

說明:點選GridView內LinkButton後,使用JavaScript的window.showModalDialog開啟並傳值到子視窗。使用showModalDialog是因為可凍結母視窗。

作法:
Parent.aspx
<asp:BoundField DataField="File_ID" HeaderText="檔案代碼" />
<asp:BoundField DataField="File_Path" HeaderText="檔案路徑"  />
<asp:TemplateField HeaderText="下載">
                <ItemTemplate>
                    <asp:LinkButton ID="lbtnDownload" runat="server" OnCommand="FileDownload" CommandArgument='<%# Eval("File_Path") %>'>
                </ItemTemplate>
            </asp:TemplateField>

//Parent.aspx.cs
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
 {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //使用FindControl找到GridView控制項內的LinkButton控制項
            LinkButton lbtnDownload = (LinkButton)e.Row.FindControl("lbtnDownload");

            string strFile_ID = e.Row.Cells[0].Text;
            lbtnDownload.OnClientClick = "javascript:window.showModalDialog(Child.aspx?File_ID=" + strFile_ID + "', '', 'resizable:no;status:no;scroll:no;dialogHeight:80px;dialogWidth:200px;')";
        }
 }

//Child.aspx
<head runat="server">
    //目標為子視窗自身
    <base target="_self">
</head>
...
<asp:HiddenField ID="hidFileID" runat="server" />

//Child.aspx.cs
 protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["File_ID"] != null)
        {
            hidFileID.Value = Request.QueryString["File_ID"];
        }
    }

參考資料:
http://toyo0103.blogspot.tw/2012/10/showmodaldialog.html

沒有留言:

張貼留言