2010-11-05 78 views

回答

2

您可以使用TemplateColumn,在該TemplateColumn中,您可以定義一個按鈕,您可以在其中放置javascript函數以打開新窗口。

例子:

<asp:TemplateField> 
    <ItemTemplate> 
     <input type="button" onclick="javascript:ShowImageInNewPage('PageToShowImage.aspx?tradeId=<%# Eval("TradeId") %>');" /> 
    </ItemTemplate> 
</asp:TemplateField> 

的「ShowImageInNewPage」功能聲明與選定圖片的網址,彈出/打開新窗口的自定義功能。

在PageToShowImage.aspx,聲明img標籤:

<asp:Image ID="imgBlah" runat="server" /> 

在代碼PageToShowImage.aspx的背後:

protected void Page_Load(object sender, EventArgs e) 
{ 
    // this is querystring from GridView page 
    if(Request.QueryString["tradeId"] != null) 
    { 
     imgBlah.Src = "GetImage.aspx?entityId=" + tradeId + "&entityType=T"; 
    } 
    else 
    { 
     imgBlah.Src = "~/images/no-image.jpg"; // set no image 
    } 
} 

HTH

+0

謝謝我創建了一個javascript函數來打開一個新窗口。然而,圖像正在從數據庫中檢索,並由一個名爲GetImage.aspx的頁面處理,該頁面接受查詢字符串,如我的問題中的鏈接所示。我覺得我在這裏糾結在代碼中,我不知道如何使用我的參數填充URL。我如何將當前行的tradeId(主鍵)添加到ImageURL中? – 2010-11-05 12:58:30

+0

我剛編輯我的答案,檢查它是否可以幫助你。 – Arief 2010-11-05 13:07:49

+0

偉大的東西,現在完美工作!謝謝你的幫助。 – 2010-11-05 13:46:24

1

我希望你處理與瀏覽器支持的圖像格式。假設你是,你不需要ButtonField。正如Arief所建議的,一種方法是在TemplateColumn中使用<asp:HyperLink>

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:HyperLink ID="hyperLink1" runat="server" NavigatUrl="UrlToYourViewImagePage" Text="View Image" /> 
    </ItemTemplate> 
</asp:TemplateField> 

如果你想要的形象打開一個新窗口,建立一個window.open呼籲每個超鏈接的NavigateUrl。

+0

是的,我正在使用存儲在SQL Server中的.gif圖像。我不太確定我應該放在NavigateURL中,因爲正如我在Arief的評論中提到的,我有另一個名爲GetImage.aspx的頁面處理來自數據庫的圖像請求。你能幫忙嗎?我也不確定如何格式化它,以便它會調用JavaScript函數。 – 2010-11-05 13:01:33

+0

感謝您的幫助,我決定使用Arief的解決方案。 – 2010-11-05 13:46:50