当我尝试访问.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);
});
});
非常感谢
答案 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脚本加载解决了这个问题。