DataTable.js - 始终返回一个空数组

时间:2016-01-18 17:06:52

标签: javascript jquery datatables

当我尝试访问.DataTable()函数时,它总是返回null,我一直在努力解决这个问题...... 这是我的代码:view jsfiddle

HTML:     

<table id="example">
    <thead>
        <tr>
            <th> Name </th>
            <th> Age </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th> Rotem </th>
            <th> 18 </th>
        </tr>
        <tr>
            <th> Bar </th>
            <th> 13 </th>
        </tr>
        <tr>
            <th> Shadmot </th>
            <th> 8 </th>
        </tr>
        <tr>
            <th> Devora </th>
            <th> 78 </th>
        </tr>
    </tbody>
</table>

<button id="button"> Click me </button>

<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script src="https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min.js"></script>
</body>

JAVASCRIPT:

$(document).ready(function() {
     var b = $('#example').dataTable();

     $('#button').on('click', function() {
        window.alert(b);
     });
 });

非常感谢

3 个答案:

答案 0 :(得分:1)

b中的内容是数据表库的API。如果你把它改成

$(document).ready(function() {
     var b = $('#example').DataTable();

     $('#button').on('click', function() {
        b.search("13");
        b.draw();
     }); 
 });

您将获得正确的结果。在这些时候你真的必须阅读这些手册,你不能像过去那样疯狂猜测。

答案 1 :(得分:0)

我改变了我的回答。在按钮处理程序中,我在处理程序中获取数据表的实例。请注意,我使用大写D来获取实例。在我的示例中,q以列形式2x4数组返回数据,s =以4x4数组的形式返回行数据。请注意,我还添加了css样式表并将链接移动到顶部。

    Database1 db = new Database1();
    public void WriteXML(Item modelItem)
    {
        using (db = new Database1())
        {
            string pathxml = string.Concat(HttpContext.Current.Server.MapPath("/") );

            try
            {
                GoogleSiteMap google = new GoogleSiteMap();
                List<url> lsu = new List<url>();
                StreamWriter xmlfile;
                // Get List Item ON
                List<Item> ListItemActif = (db.Item.Where...

                foreach (Item i in ListItemActif)
                {
                    DateTime dt = Convert.ToDateTime(c.date_creation_Item);
                    string datecreation = dt.Year + "-" + dt.Month + "-" + dt.Day;

                    url u = new url();
                    u.Location = string.Concat("mysite.com/" + c.url_Item);
                    u.LastModified = datecreation;
                    u.ChangeFrequency = "daily";
                    u.Priority = "0.80";
                    lsu.Add(u);
                }
                google.Urls = lsu;
                if (!System.IO.File.Exists(pathxml))
                {
                    // Créer fichier
                    // Authorisation d'accès
                    System.Security.AccessControl.FileSecurity access = System.IO.File.GetAccessControl(pathxml);
                    xmlfile = File.CreateText(pathxml + "Content/xml/sitemap-kub.xml");

                    XmlSerializer writer = new XmlSerializer(google.Urls.GetType());

                    XmlSerializerNamespaces xmlNameSpace = new XmlSerializerNamespaces();
                    xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                    xmlNameSpace.Add("schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd");
                    xmlNameSpace.Add("", "http://www.sitemaps.org/schemas/sitemap/0.9");

                    writer.Serialize(xmlfile, google.Urls, xmlNameSpace);
                    xmlfile.Close();
                }
            }
            catch (Exception ex)
            {
                string message = "Message :" + ex.Message;
            }
        }
    }
    [XmlRoot("urlset")]
    public class GoogleSiteMap
    {
        public List<url> Urls { get; set; }
    }

    public class url
    {
        [XmlElement("loc")]
        public string Location { get; set; }
        [XmlElement("priority")]
        public string Priority { get; set; }
        [XmlElement("lastmod")]
        public string LastModified { get; set; }
        [XmlElement("changefreq")]
        public string ChangeFrequency { get; set; }
    }
}

答案 2 :(得分:0)

问题并非如此愚蠢。我有同样的问题,但不是因为api的误解。 这是因为,在我的页面中初始化了主数据表之后,我正在通过ajax加载一些部分HTML代码,其中包含<script src="../dataTables.js">。因此,dataTable插件在页面中加载了两次。当然(即使我花了一点时间来理解......),$(selector).DataTable().rows()$(selector).dataTable().api().rows()都返回空数组,而我的表仍在那里且清晰可见...... 删除重复的datatable.js脚本加载解决了这个问题。