2012-03-19 57 views
2

在這裏我已經在c#.net中創建了一個網站,並且我希望點擊fancybox中的gridview字段後將打開的頁面。 但是我面臨的一個問題是,它打開了第一行fancybox中的頁面,但我不知道爲什麼..?fancybox jquery gridview綁定問題的模板字段

這裏是我的代碼:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
<script type="text/javascript" src="../fancybox/jquery.mousewheel-3.0.4.pack.js"></script> 
<script type="text/javascript" src="../fancybox/jquery.easing-1.3.pack.js"></script> 
<script type="text/javascript" src="../fancybox/jquery.fancybox-1.3.4.js"></script> 
<script type="text/javascript" src="../fancybox/jquery.fancybox-1.3.4.pack.js"></script> 
<link rel="stylesheet" type="text/css" href="../fancybox/jquery.fancybox-1.3.4.css" 
    media="screen" /> 
<script type="text/javascript" language="javascript"> 
    $(document).ready(function() { 

      $('#deal_VCU').fancybox({ 
       'width': '85%', 
       'height': '85%', 
       'autoScale': false, 
       'transitionIn': 'none', 
       'transitionOut': 'none', 
       'type': 'iframe', 
       'titleShow': false 
      }); 
     }); 
</script> 

<asp:GridView ID="GrdDeals" runat="server" AllowPaging="True" AllowSorting="True" 
    AutoGenerateColumns="False" CellPadding="1" DataKeyNames="OFID" DataSourceID="SqlDataSource3" 
    ForeColor="#333333" GridLines="None" PageSize="100" 
    onrowdatabound="GrdDeals_RowDataBound" onrowcommand="GrdDeals_RowCommand"> 
    <Columns> 
     <asp:BoundField DataField="OFID" HeaderText="Offer ID" SortExpression="OFID" /> 
     <asp:BoundField DataField="Text_Message" HeaderText="Offer Text" SortExpression="Text_Message" /> 

     <asp:TemplateField HeaderText="Deal for VCU" SortExpression="Counter1"> 
      <ItemTemplate> 
       <a id="deal_VCU" href="DetailView.aspx?ID=<%#Eval("OFID")%>&Op1=Counter2"> 
        <%#Eval("Counter2")%></a> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Deal for SCSU" SortExpression="Counter2"> 
      <ItemTemplate> 
       <a id="deal_SCSU" href="DetailView.aspx?ID=<%#Eval("OFID")%>&Op1=Counter2"> 
        <%#Eval("Counter2")%></a> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Deal for Trinity" SortExpression="Counter3"> 
      <ItemTemplate> 
       <a id="deal_Trinity" href="DetailView.aspx?ID=<%#Eval("OFID")%>&Op1=Counter3"> 
        <%#Eval("Counter3")%></a> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
    <RowStyle BackColor="#EFF3FB" Height="4" /> 
    <EditRowStyle BackColor="#2461BF" /> 
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Right" /> 
    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
    <AlternatingRowStyle BackColor="White" /> 
</asp:GridView> 

在這裏,我現在面臨一個問題,即的fancybox越來越開放的只有第一行。

回答

2

這是因爲有多個超鏈接控件在那裏有相同的ID。請指定一個CSS類(比如deal_VCUCSS

<a id="deal_VCU" class="deal_VCUCSS" href="DetailView.aspx?ID=<%#Eval("OFID")%>&Op1=Counter2"> 
           <%#Eval("Counter2")%></a> 

,並使用下面

$('.deal_VCUCSS').fancybox({ 
+0

現在它停止工作的第一行也.... – 2012-03-19 13:09:04

+0

你可以請檢查你是否添加了類,因爲我已經把它放在上面的更新代碼? – PraveenVenu 2012-03-19 13:10:40

+0

課堂內有什麼?..?你能詳細說明一下嗎? – 2012-03-19 13:13:03

1

爲了讓jQuery選擇工作,他們需要知道你指的是什麼元素,因爲你的代碼有一個錯誤(基於W3C,一個ID只能在html文件中使用一次,以便DOM元素知道你想訪問的元素)。

你需要有一個類,就像在前面的評論中一樣,以便擁有事件監聽器。或者如果你想爲每個鏈接使用不同的ID,那麼你可以循環並將一個事件監聽器應用到它們中的所有節點上 $(「#main_div_container」)。find(「a」)。each(function(){ }); 我希望有所幫助。