2011-05-20 58 views
0

我一直在試圖找出什麼不對的,過去幾年分鐘..jQuery的不工作我的ASP頁面

<%@ Page Title="test" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %> 

<%@ PreviousPageType VirtualPath="~/Top.aspx" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server"> 
    <style> 
     #pagediv { width: 1500px !important; } 
    </style> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("#ddModel").change(function() { 
      var selVal = $(this).find(":selected").text(); 
      var rows = $("#gvTop tr:gt(0)"); 
      alert(selVal); 
      if (selVal == "ALL") { 
       $("#gvTop tr").show(); 
      } 
      else { 
       var rowToShow = rows.find("td:eq(3)").filter(":contains(" + selVal + ")").closest("tr"); 
       rows.show().not(rowToShow).hide(); 
      } 
     }); 
    }); 
</script> 
</asp:Content> 

仍然不知道現在。

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server"> 
    <asp:DropDownList ID="ddModel" runat="server" DataSourceID="ddmodelsource" DataTextField="Column1" DataValueField="Column1"> 
    </asp:DropDownList> 
    <asp:GridView ID="gvTop" runat="server" CellPadding="2" CellSpacing="2" GridLines="Vertical"> 
    </asp:GridView> 
</asp:Content> 
+1

什麼是「不工作」? jQuery的加載(測試通過做一個警報('jquery加載');在你的$(document).ready(function ... 當你用螢火蟲測試頁面時,你會看到它被加載或任何JavaScript錯誤嗎? – Raoul 2011-05-20 08:47:05

+0

它會執行一些意想不到的事情,或者代碼根本就沒有執行?它是否在最小化的非ASP HTML-Prototype中工作? – 2011-05-20 08:48:49

+0

@Raoul @jm_在$(「#ddModel」)之前添加一個警報change(function() {'但是alert()裏面的那個函數不起作用,我是用錯誤的方式調用了id的 – 2011-05-20 08:51:38

回答

3

這是因爲在內容頁面中,ASP.NET將分配的ID更改爲其他內容。如果你查看頁面的源代碼,你可以看到。因此,替代方案是使用CssClass訪問控件。

例如添加CssClassGridViewDropDownList

<asp:DropDownList ID="ddModel" runat="server" DataSourceID="ddmodelsource" DataTextField="Column1" DataValueField="Column1" CssClass="dropdown"> 
</asp:DropDownList> 

<asp:GridView ID="gvTop" runat="server" CellPadding="2" CellSpacing="2" 
     GridLines="Vertical" CssClass="grid"> 
    </asp:GridView> 

現在訪問它的jQuery這樣。

$(document).ready(function() { 
    $(".dropdown").change(function() { 
     var selVal = $(this).find(":selected").text(); 
     var rows = $(".grid tr:gt(0)"); 
     alert(selVal); 
     if (selVal == "ALL") { 
      $(".grid tr").show(); 
     } 
     else { 
      var rowToShow = rows.find("td:eq(3)").filter(":contains(" + selVal + ")").closest("tr"); 
      rows.show().not(rowToShow).hide(); 
     } 
    }); 
}); 
+0

這很好用,謝謝!!我只是好奇,jquery中有什麼用#如果它不能像這樣使用?jQuery中的# – 2011-05-20 08:59:18

+1

#在javascript中等價於document.getElementById。問題在於我們的asp.net框架(它讓id變混淆了)。您可以安全地在任何html控件中使用#而無需runat =「server」。加上jquery是廣泛的y用於許多其他流行的框架和語言,如java,php,ruby .... – naveen 2011-05-20 09:06:08

+0

感謝您的信息夥伴 – 2011-05-20 09:11:55