hyperLinkField中的DataNavigateUrlFormatString屬性不能執(zhí)行javascript的解決辦法

文章摘自:
http://www.cnblogs.com/sdikerdong/archive/2011/07/31/2122724.html

今天在做案子時候遇到用GridView控件時,想在里面有一個hyperlink,點擊后彈出窗口再顯示另外頁面??墒窃谟肈ataNavigateUrlFormatString屬性時,發(fā)現(xiàn)<hyperlinkFiled DataNavigateUrlFormatString="javascript:window.open('abc.aspx?...."這樣寫后,原來可以點擊的hyperlink變成不可點擊了。上網(wǎng)找有文章說是這是微軟的Bug。在DataNavigateUrlFormatString中不能有“:”。網(wǎng)上給出的解決辦法有兩種:一種是將上述代碼用itemTemplate來代替:

http://blogs.msdn.com/b/jjameson/archive/2009/10/26/datanavigateurlformatstring-does-not-allow-javascript.aspx

<asp:GridView ID="summaryGrid" runat="server"
    AutoGenerateColumns="False"
    ...>
    ...
    <Columns>
        <%-- HACK: Ideally, we would just use an asp:HyperLinkField,
        but there's a bug when specifying "javascript:" in the
        DataNavigateUrlFormatString:

        https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102300

        As a workaround, use a TemplateField instead. --%>
        <asp:TemplateField>
           <HeaderTemplate>Date</HeaderTemplate>
           <HeaderStyle CssClass="dateColumn" />
           <ItemTemplate>
               <a href='javascript:ShowItemDetail(<%# Eval("Id")%>)'>
                   <%# Eval("CreateTime", "{0:ddd MMM dd HH:mm}") %>
               </a>
           </ItemTemplate>
        </asp:TemplateField>
        ...
    </Columns>
</asp:GridView>

另外一種是用DataTextFormatString代替DataNavigateUrlFormatString。

http://www.vbforums.com/showthread.php?t=521952

<asp:HyperLinkField DataTextField="ID Control" DataTextFormatString="<a href=javascript:openWindow('{0}');>View</a>" />

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容