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 に答える