Javascript 如何通过单击gridview链接在新窗口中显示保存在文件位置中的图像?术语弹出窗口(模式)应显示在两者之间

Javascript 如何通过单击gridview链接在新窗口中显示保存在文件位置中的图像?术语弹出窗口(模式)应显示在两者之间,javascript,c#,jquery,webforms,modal-dialog,Javascript,C#,Jquery,Webforms,Modal Dialog,好了,有两周时间,我的一个分支遗留应用程序出现了问题。 我有一个gridview,当我点击gridview中的链接时,我会在一个新窗口中显示一个相关的图像。一项新的要求是,在点击新窗口后,应向用户显示一个“使用条款”弹出窗口,用户需要同意该弹出窗口。同意后,图像应像以前一样加载到新窗口中 我尝试用一点jquery和一个div创建一个带有modal.dialog的弹出窗口,我可以让它显示出来。但是,我试图从这个弹出窗口打开图像的任何尝试都没有成功。我认为gridview的索引在显示模式弹出窗口时丢

好了,有两周时间,我的一个分支遗留应用程序出现了问题。 我有一个gridview,当我点击gridview中的链接时,我会在一个新窗口中显示一个相关的图像。一项新的要求是,在点击新窗口后,应向用户显示一个“使用条款”弹出窗口,用户需要同意该弹出窗口。同意后,图像应像以前一样加载到新窗口中

我尝试用一点jquery和一个div创建一个带有modal.dialog的弹出窗口,我可以让它显示出来。但是,我试图从这个弹出窗口打开图像的任何尝试都没有成功。我认为gridview的索引在显示模式弹出窗口时丢失了

这个申请已经12年了(在我之前是Waaay)。它是以c#和asp.net web形式开发的。 我是新手。对格式化表示歉意。filestream代码在那里已经存在很长时间了。有没有更好的办法?谢谢你事先的帮助

因此,用户单击gridview中的链接->弹出窗口显示条款,其中有一个同意按钮,理想情况下还有一个取消按钮。用户同意,弹出窗口显示图像

'''

'''//获取与要传递到文件流的图像相关的信息

private void Agree()
    {
        ArchiveItem myArchiveItem = new ArchiveItem();
        miArchiveItemId = Trunks;
        if (miArchiveItemId > 0)
        {
            //Retrieve data from DB.
            myArchiveItem = mysearchMediator.GetArchiveItemByID(miArchiveItemId);
        }
        DigitalObjectLink(myArchiveItem);
    }

    //Display the image using a file stream.
    //Code works to display image without the file modal

public void DigitalObjectLink(ArchiveItem myArchiveItem)
    {
        LinkButton OpenObject = new LinkButton();

        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            OpenObject = (LinkButton)GridView1.Rows[0].FindControl("btnOpenObject");
            OpenObject.OnClientClick = "aspnetForm.target ='_blank';";
        }
        try
        {
            string path = ConfigurationManager.AppSettings["ImageFilePath"] + '\\' + myArchiveItem.RelativeFolderPath +
               '\\' + myArchiveItem.FileName;

            //string path = "C:" + '\\' + "Temp" + '\\' + myArchiveItem.FileName;

            FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
            byte[] ar = new byte[(int)fs.Length];


            Response.AddHeader("content-disposition", "attachment;filename=" + myArchiveItem.FileName);
            Response.ContentType = "application/octectstream";
            ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript:showdialog('" + path + "'); ", true);

            fs.Read(ar, 0, (int)fs.Length);
            fs.Close();
            Response.BinaryWrite(ar);
            Response.Flush();
            Response.End();

        }
        catch
        {
            /*
            ** Hide Navigation & GridView & Show File Not Found Panel
            */
            OpenObject.OnClientClick = "aspnetForm.target ='_self';";
            this.NavigationControl1.Visible = false;
            this.NavigationControl2.Visible = false;
            this.GridView1.Visible = false;
            lblFileNotFound.CssClass = "SearchResultsCount";
            btnContactUs.Text = "Please contact PRONI quoting reference: " + myArchiveItem.Reference;

        }
    }
private void Agree()
{
ArchiveItem myArchiveItem=新ArchiveItem();
miArchiveItemId=树干;
如果(miArchiveItemId>0)
{
//从数据库中检索数据。
myArchiveItem=mysearchMediator.GetArchiveItemByID(miArchiveItemId);
}
DigitalObjectLink(myArchiveItem);
}
//使用文件流显示图像。
//代码用于在没有文件模式的情况下显示图像
公共无效数字对象链接(ArchiveItem myArchiveItem)
{
LinkButton OpenObject=新建LinkButton();
对于(int i=0;i
<div id="ModalMessage" title="testWindow" class="divAcceptWindow" style="display: none;">
<label style="font-weight: bold" class="boldCentral">Copying and Copyright Declaration</label>
<br />
This declaration has been issued under rule 5(3).
I declare that: blah blah…
<input type="button" id="okButton" value="I Agree" name="okButton" />
</div>

<script type="text/javascript">
    //script to call popup
    function showdialog() {
        $("#ModalMessage").dialog({ modal: true });
        $("#ModalMessage").dialog({ width: 500 });
        $(".ui-dialog-titlebar").hide();
        scrollTo(0, 0);
    }

    //script to show image from serverside
    $('#okButton').click(function () {
        $('#ModalMessage').dialog('close');
        var dataToSend = { MethodName: 'IAgree' };
        var options =
        {
            data: dataToSend,
            dataType: 'JSON',
            type: 'POST',
        }
        $.ajax(options);
    });
</script>
protected void OpenObjectSelect_Click(object sender, EventArgs e)
    {
        LinkButton b = (LinkButton)sender;
        int miIndex = Convert.ToInt32(b.CommandArgument);
        LocalSearch.DetailPosition = miIndex;
        miArchiveItemId = LocalSearch.ArchiveItems[LocalSearch.DetailPosition].ArchiveItemId;
        //call popup
        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "showdialog()", true);
    }


protected void Page_Load(object sender, System.EventArgs e)
    {
        //hook of jquery button click with method. This is hit after clicking I agree on pop up.
        if (!Page.IsPostBack)            {
            if (Request.Form["MethodName"] == "IAgree") // same Method Name that we are specifying on client side
            {
                Agree();
                return;
            }
        }
    }
private void Agree()
    {
        ArchiveItem myArchiveItem = new ArchiveItem();
        miArchiveItemId = Trunks;
        if (miArchiveItemId > 0)
        {
            //Retrieve data from DB.
            myArchiveItem = mysearchMediator.GetArchiveItemByID(miArchiveItemId);
        }
        DigitalObjectLink(myArchiveItem);
    }

    //Display the image using a file stream.
    //Code works to display image without the file modal

public void DigitalObjectLink(ArchiveItem myArchiveItem)
    {
        LinkButton OpenObject = new LinkButton();

        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            OpenObject = (LinkButton)GridView1.Rows[0].FindControl("btnOpenObject");
            OpenObject.OnClientClick = "aspnetForm.target ='_blank';";
        }
        try
        {
            string path = ConfigurationManager.AppSettings["ImageFilePath"] + '\\' + myArchiveItem.RelativeFolderPath +
               '\\' + myArchiveItem.FileName;

            //string path = "C:" + '\\' + "Temp" + '\\' + myArchiveItem.FileName;

            FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
            byte[] ar = new byte[(int)fs.Length];


            Response.AddHeader("content-disposition", "attachment;filename=" + myArchiveItem.FileName);
            Response.ContentType = "application/octectstream";
            ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript:showdialog('" + path + "'); ", true);

            fs.Read(ar, 0, (int)fs.Length);
            fs.Close();
            Response.BinaryWrite(ar);
            Response.Flush();
            Response.End();

        }
        catch
        {
            /*
            ** Hide Navigation & GridView & Show File Not Found Panel
            */
            OpenObject.OnClientClick = "aspnetForm.target ='_self';";
            this.NavigationControl1.Visible = false;
            this.NavigationControl2.Visible = false;
            this.GridView1.Visible = false;
            lblFileNotFound.CssClass = "SearchResultsCount";
            btnContactUs.Text = "Please contact PRONI quoting reference: " + myArchiveItem.Reference;

        }
    }