2

我在后面的代码中创建了一个 HTML 表,并将其添加到 ASPX 页面的面板控件中。

现在我想在 javascript 中使用它的 id 来获取表格来实现表格排序器。

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

它没有识别我在 Codebehind 中创建的 mytable 控件:

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

请帮助我尝试多种方法,但没有任何效果。

提前致谢

4

3 回答 3

2

你有几个选择。基本思想是将感兴趣的控件的 ClientID 输出到您可以找到的地方。

例如:

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

或者:如果您在 ASP.NET 4.5 环境中,您可以设置 ClientIDMode="Static" 并直接在脚本中对其进行硬编码。但请注意,如果您引入了 ID 冲突,ASP.NET 会打击您的手腕。

<asp:Grid ClientIDMode="Static" ID="my_static_table_id" />
$(document).ready(function () {
    $("#my_static_table_id").tablesorter();
}); 
于 2013-02-25T06:42:26.663 回答
1

您的示例包含不同的 idmyTableNavTable. 如果您想按 id 选择,您使用的选择器不正确。您的选择器必须看起来像:

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

所以你忘记了选择器值的尖锐。

于 2013-02-25T06:41:37.653 回答
1

这里有几个问题。

  1. 您尝试从 javascript 中引用“myTable”,并将其命名为“NavTable”。

  2. 在 jQuery 中通过 id 引用 html 元素需要 a#在开头告诉 jQuery 选择器是一个 ID 而不是一个 html 标记名称。

  3. 为确保 ASP.NET 在 HTML 输出中不使用另一个 id,您应该ClientID从您在 C# 中创建的 ASP.NET 服务器端对象获取值(如果在 ASP.NET 用户控件中声明,则可能会发生这种情况)。

代码将如下所示:

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

为此,您还需要将Table变量声明为类中的成员,以便设计代码在范围内看到它。否则,这只能在您创建它的方法中访问。

如果您知道这将始终生成您为其分配的实际 ID,您可以在 javascript 中对其进行硬编码,如下所示:

$(document).ready(function () {
    $("#NavTable").tablesorter();
});
于 2013-02-25T06:43:28.053 回答