2013-02-25 54 views
2

我已經在後面的代碼中創建了一個HTML表格,並將它添加到ASPX頁面中的面板控件。如何使用Javascript查找動態生成的控件?

現在我想要在javascript中使用它的id來實現表格分揀機。

$(document).ready(function() { 
     $("myTable").tablesorter(); 
    }); 

它沒有識別出我的代碼隱藏創建mytable的控制:

 HtmlTable Table= new HtmlTable();   
     Table.ID = "NavTable"; 

請你幫我這個嘗試過很多方法,但沒有什麼工作。

在此先感謝

回答

2

你有幾種選擇。基本的想法是輸出你感興趣的控制器的ClientID,你可以找到它。

例如:

$(document).ready(function() { 
    $("#<%=this.TableControl.ClientID%>").tablesorter(); 
}); 

或者:如果您在ASP.NET 4.5的環境是可以設置的ClientIDMode =「靜」,而直接硬編碼在腳本中。但是,請注意,如果您引入ID衝突,則ASP.NET將爲您的手腕打耳光。

<asp:Grid ClientIDMode="Static" ID="my_static_table_id" /> 
$(document).ready(function() { 
    $("#my_static_table_id").tablesorter(); 
}); 
+0

非常感謝它的工作後,我的的ClientIDMode設置爲靜態.. – Divz 2013-02-26 09:41:34

1

你舉的例子中包含不同的ID myTableNavTable。如果你想通過ID選擇,你正在使用不正確的選擇器。您的選擇器必須如下所示:

$("#NavTable").tablesorter(); 

因此,您忘記了選擇器值的急劇變化。

1

這裏有幾個問題。

  1. 您嘗試從javascript引用「myTable」,並將其命名爲「NavTable」。

  2. 在jQuery中通過id引用html元素需要一個#在開始時告訴jQuery選擇器是一個ID而不是html標記名稱。

  3. 爲確保ASP.NET在HTML輸出中不使用其他標識,您應該從您在C#中創建的ASP.NET服務器端對象獲取ClientID值(如果在內部聲明一個ASP.NET用戶控件)。

的代碼就這個樣子:

$(document).ready(function() { 
    $("#<%=Table.ClientID%>").tablesorter(); 
}); 

爲此,您還需要聲明Table變量作爲類中的成員,這樣的設計代碼,會看到它的範圍。否則這隻能在您創建它的方法中訪問。

如果你知道,這總是會生成您分配它的實際ID,您可以硬它在這樣的JavaScript代碼:

$(document).ready(function() { 
    $("#NavTable").tablesorter(); 
}); 
相關問題