使用<a href=""> inside a gridview</a>

时间:2012-03-13 19:23:41

标签: javascript asp.net

我在gridview中有锚标签,我使用javascript onclick来弹出一个新窗口。这一切都按预期的方式工作,除了当窗口弹出时如果使父页面执行自动后备。我已经研究了这个,但无法找到为什么会发生这种情况或如何解决它。这是我的代码,首先是我的网格,第二个是javacsript函数。

  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        AllowSorting="True" AllowPaging="True" PageSize="20" BackColor="White" 
        BorderColor="#003366" BorderStyle="None" BorderWidth="1px" CellPadding="3" 
        GridLines="Vertical"  Font-Names="Verdana" Font-Size="Small">
        <AlternatingRowStyle BackColor="#D9ECFF" BorderColor="#003366" />
        <Columns>

             <asp:TemplateField HeaderText="SELECT">
                <ItemTemplate>
                   <asp:CheckBox ID="CheckBox1" runat="server"/>
                </ItemTemplate>
            </asp:TemplateField>

                <asp:TemplateField>
                    <ItemTemplate>
                        <a href="#" onclick="clickMe('<%# Eval("ICAO") %>')" target="_top">Test</a>
                    </ItemTemplate>
                </asp:TemplateField>
            <asp:BoundField DataField="ICAO" HeaderText="ICAO" SortExpression="ICAO" />
            <asp:BoundField DataField="IATA" HeaderText="IATA" SortExpression="IATA" />
            <asp:BoundField DataField="AIRPORT_NAME" HeaderText="AIRPORT NAME" SortExpression="AIRPORT_NAME" />
            <asp:BoundField DataField="CITY" HeaderText="CITY" SortExpression="CITY" />
            <asp:BoundField DataField="COUNTRY" HeaderText="COUNTRY" SortExpression="COUNTRY" />
            <asp:BoundField DataField="REVISED_DATE" HeaderText="REVISED DATE" SortExpression="REVISED_DATE" />
            <asp:BoundField DataField="EMAIL_DATE" HeaderText="EMAIL DATE" SortExpression="EMAIL_DATE" />          
        </Columns>

        <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
        <HeaderStyle BackColor="#465c71" Font-Bold="True" ForeColor="#F7F7F7" />
        <PagerSettings FirstPageText="First" LastPageText="Last" 
            Mode="NextPreviousFirstLast" NextPageText="Next" Position="Top" 
            PreviousPageText="Previous" />
        <PagerStyle BackColor="#F7F7F7" ForeColor="#465c71" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F7F7" ForeColor="#4A3C8C" />
        <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
        <SortedAscendingCellStyle BackColor="#F4F4FD" />
        <SortedAscendingHeaderStyle BackColor="#5A4C9D" />
        <SortedDescendingCellStyle BackColor="#D8D8F0" />
        <SortedDescendingHeaderStyle BackColor="#3E3277" />

    </asp:GridView>

    <script language="javascript" type="text/javascript">
    function clickMe(icao) {
        targetUrl = "login.aspx?icao=" + icao
        window.open(targetUrl, 'Rep_Search', 'toolbar=no, directories=no,    
        location=no,status=yes, menubar=no, resizable=no, scrollbars=yes, height=300, 
       width=400'); return false;
    }
    </script>

1 个答案:

答案 0 :(得分:0)

您的“onclick”属性应该说onclick='return clickMe( ... )'。您的处理程序返回false,但该属性中的代码基本上是真正的处理程序,并且它根本没有return

此外,正如一些建议一样,发布尽可能少的代码是个好主意。它使人们更容易扫描问题并寻找简单的问题。当然,缩小代码太多并不好,因为很容易对导致问题的原因做出错误的假设。