2

好吧,我敢打赌这是“这适用于我的机器”的情况。

问题是:

LinkButton我有一个GridView

<asp:TemplateField HeaderText="Website">
    <ItemTemplate>
        <asp:LinkButton ID="L_Website" CausesValidation="true" runat="server" Text='<%# Eval("L_Website") %>'
            CommandArgument="GoToWebsite" OnClientClick="return confirm('Are you sure you want to go to this Website?');"
            CommandName="GoToWebsite"></asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>

我用以下数据填充数据DataReader

dr["L_Website"] = Convert.ToString(reader["L_Website"]);

也许您还想查看 GoToWebsitecode:

protected void GV_Contacts_RowCommand(object sender, GridViewCommandEventArgs e)
{
    string ID = string.Empty;
    string status = string.Empty;
    if (e.CommandName == "Edit")
    {
        //code here
    }
    else if (e.CommandName == "View")
    {
        //code here
    }
    else if (e.CommandName == "GoToWebsite")
    {
        LinkButton lb = (LinkButton)e.CommandSource;
        GridViewRow gvr = (GridViewRow)lb.NamingContainer;
        LinkButton LinkButton = gvr.Cells[8].Controls[1] as LinkButton;
        if (LinkButton.Text.Substring(0, 3) == "www")
        {
            System.Diagnostics.Process.Start(LinkButton.Text);
        }
        else
        {
            System.Diagnostics.Process.Start("www." + LinkButton.Text);
        }
    }
}

它在本地机器上运行良好。它正在显示,如果我单击它,本地版本会进行确认,然后在此页面上打开一个新选项卡。在服务器(IIS 6.0)上,它也会正确显示,然后如果我点击它,它也会进行确认,但它不会打开带有页面的新选项卡。

如果我更改CausesValidation,它也不起作用。
如果我没有OnClientClick,它也不起作用。
如果我(悬停)在 上LinkButton,它会告诉我它会进行回发。

已经谢谢你了:)

4

1 回答 1

2

你不是在想“客户端/服务器”之类的。

你正在做的是开始一个过程。这在您的本地开发机器上有效且可见,因为您坐在监视器前并且可以看到这些进程。

您很可能也在服务器上启动进程,但是那里没有人可以看到它们。登录服务器并观看任务管理器。

您必须找到一个解决方案,该解决方案在代码的客户端而不是服务器端打开链接。(所有这些都可以使用 HTML 和 JavaScript 完成,无需 PostBack。)

于 2013-07-18T10:13:53.797 回答