我知道有很多关于这方面的帖子,但我已经尝试过每一个帖子,但没有一个有效!
我有一个aspx和aspx.cs页面正在使用visual studio 2010运行。
在我的aspx页面上,我有一个表格
<table id="viewPendingTable" runat="server"></table>
在aspx.cs页面上,表中加载了数据。这个很好用,没问题。加载页面后,表中包含了我需要的动态添加的数据。
我正在使用jquery dataTables来设置我的表的样式。
$(document).ready(function () {
$('#viewPendingTable').dataTable({
"bJQueryUI": true,
});
});
当我直接在html中创建一个带有虚拟信息的测试表时,数据表根据需要正确显示。但是当我将jquery脚本应用于动态表时。什么都没发生。根据需要显示动态数据,但不显示数据表(搜索功能、样式等)。
现在我怀疑这是因为脚本是在数据填充表之前运行的。
这就是我开始我的任务的地方,在aspx.cs运行并填充表之后,强制运行jquery/javascript。
但是我失败了..。因此,作为一个测试,我想我应该使用已注册的启动脚本从c#端运行一个警报。但是没有用,这不会起作用。
所以有没有人能告诉我为什么这个不起作用。
我已经尝试了多种不同的启动脚本方式!
我的aspx是:
<table id="viewPendingTable" runat="server"></table>
<script type="text/javascript" language="javascript" id="ShowTable">
<!--
loadTable();
function loadTable() {
$(document).ready(function () {
$('#viewPendingTable').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers"
});
});
alert('ALEX');
document.getElementById("table_id").width = "100%";
}
//-->
</script>
我的aspx.cs是:
protected void Page_Load(object sender, EventArgs e)
{
loadMyTable();
ClientScriptManager a = null;
a.RegisterStartupScript(GetType(), "anotherkey", "alert('ASDFASDFASDF');", true);
a.RegisterStartupScript(GetType(), "anfgsdgsderkey", "alert('MOTHER');", false);
a.RegisterStartupScript(this.GetType(), "AKey", "loadTable();", true);
ClientScript.RegisterStartupScript(GetType(), "MyScript", "<script language=javascript>" + "alert('Hello ASP.NET'); }</script>");
ScriptManager.RegisterStartupScript(this.Page, GetType(), "script", "alert('Success!');", true);
Page.ClientScript.RegisterClientScriptBlock(GetType(), "script", "alert('AAA');", true);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "script",
"alert('a');" +
"$(document).ready(function (){" +
"$('#viewPendingTable').dataTable({" +
"\"bJQueryUI\": true" +
"\"sPaginationType\": \"full_numbers\"" +
"});" +
"}); alert('b'); document.getElementById('viewPendingTable').width = 100%", true);
}
我尝试了更多的方法,试图在页面加载后运行javascript,但它们在失败的愤怒中迷失了。
谁来帮帮忙!
为什么我的简单的javascript提醒不能运行?
即使我能让他们工作...在页面加载后执行jquery,数据表的样式是否正确?
感谢您抽出宝贵的时间
亚历克斯
附注:在asp:gridView或asp:DataTable上没有评论,因为那是史诗般的失败,我几天前在上面发布了一个问题,但没有人回复。如果你想看看CLICK HERE
发布于 2011-07-19 09:57:11
更改此行代码并尝试
"$('# " + viewPendingTable.ClientID + "').dataTable({" +
在您编写的document.read脚本中
这是因为当页面在浏览器上呈现时,您可以获取表控件的实际ID
编辑利用
RegisterStartupScript
,因为它在页面末尾</form>
标记之前( <form>
标记结束之前)发出您的JavaScript。
发布于 2011-07-19 09:57:18
您面临的最可能的问题是您的页面上不存在id="viewPendingTable"
。
通过在表上添加runat="server"
属性,ID将被更改,以便ASP.NET可以在回发时绑定到它。
您需要在jQuery中使用表的ClientID
属性:
viewPendingTable.ClientID
发布于 2011-07-27 07:32:14
首先,客户端代码总是在服务器端代码执行之后运行。尽管客户端代码可以在html呈现在您的浏览器中之前运行。所以这和那个没有关系。
如果检查生成的html,您将看到asp.net将生成id的voor或您对其应用runat属性的元素。要解决这个问题,可以向表中添加一个类,并将js选择器更改为$(".classname")。
额外提示:使用像firebug这样的调试器,它允许您调试js代码,这使得解决像这样的问题变得很容易:)
https://stackoverflow.com/questions/6745327
复制相似问题