2011-02-09 33 views
2

ページロードイベントで動的に作成するASPテーブルがあります。このイベントでは、ASPテーブルにタイトルを設定し、ダウンロードするクライアントのファイルを提供する.ashxページを指すASP .NETハイパーリンクコントロールを作成します。ASP .NETからのJavascript関数呼び出しハイパーリンクNavigateURLプロパティ

特定のファイル(画像ファイル)については、そのファイルが表示された新しいウィンドウを開くためのjavascript関数を起動したいと思います。私はこれを行うためのすべてのコードを持っていますが、JavaScriptのハイパーリンクNavigateURLプロパティで機能する関数を取得できません。私はJavascriptにはとても新しいので、私は何が欠けているのか分かりません。私は何をしようとしていますか?テーブルコントロールを使用できませんか?

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim iWineID As Integer 

    If Not Integer.TryParse(Request.Params("WineID"), iWineID) Then Throw New InvalidOperationException("Invalid request") 
    Me.lblWineName.Text = Utils.GetWineName(iWineID) 
    Dim dtDocs As New dsDocs.docsDataTable 

    Using taDocs As New dsDocsTableAdapters.docsTableAdapter 
     dtDocs = taDocs.GetDataByProdIDOrWineID((Utils.GetProducerIDByWineID(iWineID)), True, iWineID) 
    End Using 

    If dtDocs.Rows.Count = 0 Then 
     Me.lblDocsFound.Text = "No documents available for this wine." 
    Else 
     Me.NumberDocs(dtDocs) 

     For Each drDoc As dsDocs.docsRow In dtDocs 
      Dim myRow As New TableRow 
      Dim myTitleCell As New TableCell 
      Dim myDLCell As New TableCell 
      Dim myHL As New HyperLink 
      Select Case drDoc.doc_type_id 
       'window.open('preview.aspx?WineID=' + nWineID', 'height=' + nWindowHeight + ',width=' + nWindowWidth + ',status=no,toolbar=no,menubar=no,location=no,scrollbars=' + bScrollbars + ',resizable=' + bScrollbars + ',titlebar=no'); 
       Case Constants.DocType.BottleShot, Constants.DocType.Label, Constants.DocType.Logo 
        myHL.NavigateUrl = "javascript:OpenPrev('" & drDoc.doc_id & "');return false;" '"javascript:window.open('~/Home/docpreview.aspx?DocID=" & drDoc.doc_id '& "','_blank', 'height=600, width=600,status=no,toolbar=no,menubar=no,location=no,scrollbars=no,resizable=no,titlebar=no'" 
        '"~/Home/docpreview.aspx?DocID=" & drDoc.doc_id 
        myHL.Text = "View" 
       Case Else 
        myHL.NavigateUrl = "~/Home/docs.ashx?DocID=" & drDoc.doc_id 
        myHL.Text = "Download" 
      End Select 

      myTitleCell.Text = StrConv(drDoc.doc_type_name, VbStrConv.ProperCase) 
      myDLCell.Controls.Add(myHL) 
      myRow.Cells.Add(myTitleCell) 
      myRow.Cells.Add(myDLCell) 
      Me.tableDocs.Rows.Add(myRow) 
     Next 
    End If 
End Sub 

背後

ASPコードのJavascript

function OpenPrev(DocID){ 

var objWin 
var myURL 

alert("GO!"); 
myURL='~/Home/docpreview.aspx?DocID=' + DocID; 
objWin=window.open(myURL, 'Doc View', 'width=600,height=600,resizable=no,scrollbars=yes,toolbar=no'); 
} 
+1

myHL.NavigateUrl = "~/Home/docs.ashx?DocID=" & drDoc.doc_id 

へ:

あなたのようNavigateURLを設定する任意の場所を変更してみてくださいJavascriptがの概念を理解していません ' 〜のURLで - それは.NETの概念であり、サーバーコードでのみ利用可能です。 –

答えて

0

@JoeEnos - それは間違いなくそれの一部です。 「http://www.google.com」のようなものをmyURLとして試してみてください。何が起こるのですか。

HTMLページのソースを表示し、生成されたハイパーリンクがどのように表示されるかを確認します。 href属性が間違っているように見えます。

+0

私は別のURLを試して、この作業を得ました。私はもう一度それを試して、それは働いた。私は職場でFirefoxを使用していましたが、Chromeを使用しても問題はありませんでしたが、Firefoxではサイコロはありませんでした。それがなぜ起こっているのでしょうか? – user576838

+0

ChromeとFirefoxでソースを表示して投稿できますか? – 5arx

2

最初にURLを解決する必要があります。あまりにも深く、一つだけ速い事を掘りなければ

myHL.NavigateUrl = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath + "Home/docs.ashx?DocID=" & drDoc.doc_id 
関連する問題